url-file.el url-handlers.el url-http.el url-nfs.el
Chong Yidong: changed cus-edit.el simple.el files.el custom.el
- display.texi longlines.el xdisp.c files.texi info.el keyboard.c
- compile.el custom.texi text.texi frames.texi image-mode.el mouse.el
- misc.texi startup.el wid-edit.el xterm.c cus-theme.el
- and 295 other files
+ display.texi xdisp.c longlines.el files.texi info.el keyboard.c
+ compile.el custom.texi text.texi xterm.c frames.texi image-mode.el
+ mouse.el misc.texi startup.el wid-edit.el cus-theme.el
+ and 297 other files
Chris Hanson: changed xscheme.el scheme.el xterm.c hpux.h x11term.c
hp9000s300.h keyboard.c process.c texinfmt.el emacsclient.c sort.el
Dave Love: wrote autoarg.el autoconf.el benchmark.el cfengine.el
code-pages.el elide-head.el georgian.el hl-line.el latin-8.el
- latin-9.el latin1-disp.el refill.el rfc1345.el sgml-input.el smiley.el
- subst-big5.el subst-gb2312.el subst-jis.el subst-ksc.el tool-bar.el
- ucs-tables.el uni-input.el utf-16.el utf-7.el utf-8-lang.el welsh.el
+ latin-9.el latin1-disp.el python.el refill.el rfc1345.el sgml-input.el
+ smiley.el subst-big5.el subst-gb2312.el subst-jis.el subst-ksc.el
+ tool-bar.el ucs-tables.el uni-input.el utf-16.el utf-7.el utf-8-lang.el
+ welsh.el
and changed configure.in Makefile.in help.el fortran.el browse-url.el
mule-cmds.el simple.el xterm.c cus-edit.el files.el info.el mule.el
wid-edit.el fns.c vc.el rfc2047.el bindings.el cus-start.el buffer.c
David Reitter: wrote mailclient.el
and changed commands.h cus-edit.el easy-mmode.el emacsbug.el
- emacsclient.c keymap.c macterm.c menu-bar.el minibuf.c sendmail.el
- url-http.el
+ emacsclient.c keymap.c macterm.c menu-bar.el minibuf.c python.el
+ sendmail.el url-http.el
David Robinson: changed menu-bar.el x-win.el
David Z. Maze: changed nnml.el nnrss.el
+Davis Herring: changed timeclock.el
+
Deanna Phillips: changed configure.in
Decklin Foster: changed nngateway.el
and changed nntp.el gnus-art.el gnus-msg.el gnus-group.el gnus-start.el
gnus-sum.el gnus-xmas.el gnus-picon.el gnus-salt.el cus-edit.el rect.el
dgnushack.el gnus-agent.el gnus-ems.el gnus-fun.el gnus-topic.el
- message.el nnmail.el nnmbox.el smiley.el
+ gnus.texi message.el nnmail.el nnmbox.el smiley.el
Dirk Herrmann: changed bibtex.el
Edward O'connor: changed erc.el erc-viper.el erc-log.el erc-track.el
viper.el erc-backend.el erc-chess.el erc-dcc.el erc-ezbounce.el
erc-goodies.el erc-list.el erc-macs.el erc-match.el erc-ring.el
- erc-stamp.el goto-addr.el
+ erc-stamp.el goto-addr.el python.el
Edwin Steiner: changed gnus-nocem.el
Eli Zaretskii: wrote codepage.el rxvt.el tty-colors.el
and changed msdos.c Makefile.in makefile.w32-in files.el info.el fileio.c
- startup.el mainmake.v2 config.bat menu-bar.el pc-win.el rmail.el
- simple.el msdos.h internal.el xfaces.c emacs.c frame.c dosfns.c
- faces.el frame.el and 531 other files
+ startup.el mainmake.v2 config.bat rmail.el menu-bar.el pc-win.el
+ simple.el msdos.h internal.el xfaces.c emacs.c frame.c INSTALL dosfns.c
+ faces.el and 532 other files
Emanuele Giaquinta: changed rxvt.el configure.in etags.c frame.el
sh-script.el text.texi
Francesco Potort\e,Al\e(B: wrote cmacexp.el
and changed etags.c man.el delta.h undigest.el etags.1 comint.el
- configure.in uniquify.el latin-post.el rmail.el Makefile.in etags.el
- latin-alt.el maintaining.texi sgml-mode.el data.c european.el
+ configure.in uniquify.el latin-post.el maintaining.texi rmail.el
+ Makefile.in etags.el latin-alt.el sgml-mode.el data.c european.el
filelock.c files.el generic-x.el gud.el and 43 other files
Francis J. Wright: wrote woman.el
Glenn Morris: changed f90.el diary-lib.el calendar.el fortran.el
calendar.texi appt.el sh-script.el Makefile.in timeclock.el cal-menu.el
- files.el complete.el configure.in startup.el MACHINES abbrevs.texi
- cal-hebrew.el cal-islam.el emacs.texi fr-refcard.tex holidays.el
- and 145 other files
+ files.el complete.el configure.in programs.texi startup.el MACHINES
+ abbrevs.texi cal-hebrew.el cal-islam.el emacs.texi faq.texi
+ and 151 other files
Glynn Clements: wrote gamegrid.el snake.el tetris.el
Iwamuro Motonori: changed gnus-kill.el
J.D. Smith: changed idlwave.el idlw-shell.el idlw-help.el idlw-rinfo.el
- idlw-toolbar.el comint.el vc.el bibtex.el files.texi hideshow.el
- idlw-complete-structtag.el idlwave.texi misc.texi mouse.el
+ idlw-toolbar.el comint.el idlwave.texi vc.el bibtex.el files.texi
+ hideshow.el idlw-complete-structtag.el misc.texi mouse.el
Jaap-Henk Hoepman: changed mm-decode.el
Joev Dubach: changed nntp.el
Johan Bockg\e,Ae\e(Brd: changed erc.el erc-backend.el cl-macs.el erc-match.el
- erc-nickserv.el erc-ring.el erc-speak.el erc-track.el simple.el
- align.el bytecomp.el calendar.el cl.texi custom.el dired-aux.el
+ custom.el erc-nickserv.el erc-ring.el erc-speak.el erc-track.el
+ simple.el align.el bytecomp.el calendar.el cl.texi dired-aux.el
dired-x.el display.texi erc-bbdb.el erc-button.el erc-compat.el
erc-dcc.el and 16 other files
and changed files.el perl-mode.el
Juanma Barranquero: changed makefile.w32-in subr.el faces.el help-fns.el
- files.el buffer.c simple.el w32fns.c emacsclient.c replace.el
+ files.el simple.el buffer.c w32fns.c emacsclient.c replace.el
vhdl-mode.el bs.el cperl-mode.el eval.c org.el process.c xdisp.c
- idlwave.el sh-script.el window.c ada-mode.el and 628 other files
+ idlwave.el sh-script.el window.c ada-mode.el and 629 other files
Juergen Hoetzel: changed url-handlers.el
Kanematsu Daiji: changed nnimap.el
-Karl Berry: changed info.texi emacs.texi elisp.texi anti.texi
- display.texi emacs-xtra.texi filelock.c gnu.texi mule.texi text.texi
- building.texi cmdargs.texi copyright.el custom.texi customize.texi
- dired.c faq.texi frames.texi help.texi lists.texi loading.texi
- and 71 other files
+Karl Berry: changed emacs.texi info.texi elisp.texi anti.texi
+ display.texi emacs-xtra.texi filelock.c gnu.texi mule.texi texinfo.tex
+ text.texi building.texi cmdargs.texi control.texi copyright.el
+ custom.texi customize.texi dired.c dired.texi faq.texi frames.texi
+ and 72 other files
Karl Chen: changed files.el align.el cc-vars.el gnus-art.el help-mode.el
jka-cmpr-hook.el make-mode.el perl-mode.el python.el tex-mode.el
Martin Neitzel: changed sc.el
Martin Rudalics: changed cus-edit.el wid-edit.el cus-start.el files.el
- flyspell.el font-lock.el complete.el insdel.c macmenu.c syntax.c
- w32menu.c wdired.el whitespace.el window.el xdisp.c xmenu.c
- backups.texi buffer.c buffer.h casefiddle.c cc-mode.el
- and 36 other files
+ flyspell.el font-lock.el complete.el insdel.c ispell.el macmenu.c
+ syntax.c table.el w32menu.c wdired.el whitespace.el window.el xdisp.c
+ xmenu.c backups.texi buffer.c buffer.h and 36 other files
Martin Stjernholm: wrote cc-bytecomp.el
and changed cc-engine.el cc-cmds.el cc-langs.el cc-defs.el cc-mode.el
Michal Nazarewicz: changed ispell.el
-Micha\e,Ak\e(Bl Cadilhac: changed ido.el fill.el ispell.el anti.texi battery.el
- blackbox.el bs.el cmuscheme.el complete.el cus-edit.el dispnew.c
- faq.texi flyspell.el footnote.el glasses.el info.el life.el lpr.el
- make-mode.el misc.texi pong.el and 9 other files
+Micha\e,Ak\e(Bl Cadilhac: changed ido.el fill.el ispell.el Makefile anti.texi
+ battery.el blackbox.el bs.el cmuscheme.el complete.el cus-edit.el
+ dispnew.c faq.texi flyspell.el footnote.el fr-refcard.ps fr-refcard.tex
+ glasses.el info.el life.el lpr.el and 12 other files
Michelangelo Grigni: wrote ffap.el
and changed gnus-score.el
and changed comint.el faces.el simple.el editfns.c xfaces.c info.el
xdisp.c minibuf.c wid-edit.el xterm.c subr.el window.el cus-edit.el
diff-mode.el dispextern.h quick-install-emacs xfns.c help.el lisp.h
- textprop.c bytecomp.el and 241 other files
+ textprop.c bytecomp.el and 242 other files
Miyashita Hisashi: changed ccl.c coding.c coding.h mule-cmds.el
mule-conf.el mule.el pop3.el
Niklas Morberg: changed nnweb.el gnus-art.el nnimap.el spam.el
+Nikolaj Schumacher: changed compile.el rx.el
+
Noah Friedman: wrote eldoc.el rlogin.el rsz-mini.el type-break.el
and changed comint.el emacs-buffer.gdb files.el mailabbrev.el sendmail.el
subr.el timer.el yow.el battery.el complete.el config.in configure.in
Per Cederqvist: wrote ewoc.el
and changed vc.el vc-hooks.el diff-mode.el etags.c etags.el forms.el
- hexl.el
+ hexl.el process.c
Per Persson: wrote gnus-vm.el
Russ Allbery: changed message.el
Ryan Yeske: wrote rcirc.el
-and changed ffap.el rmailsum.el simple.el testcover.el
+and changed ffap.el ispell.el rmailsum.el simple.el testcover.el
Ryszard Kubiak: changed ogonek.el
Skip Collins: changed w32fns.c w32term.c w32term.h
-Slawomir Nowaczyk: changed python.el TUTORIAL.pl flyspell.el ls-lisp.el
- w32proc.c
+Slawomir Nowaczyk: changed emacs.py python.el TUTORIAL.pl flyspell.el
+ ls-lisp.el w32proc.c
Spencer Thomas: changed dabbrev.el emacsclient.c emacsserver.c gnus.texi
server.el tcp.c unexec.c
log-view.el pcvs-defs.el pcvs-info.el pcvs-parse.el pcvs-util.el
reveal.el smerge-mode.el
and changed vc.el font-lock.el pcvs.el newcomment.el subr.el lisp.h
- keyboard.c keymap.c tex-mode.el fill.el alloc.c compile.el files.el
- regex.c simple.el easy-mmode.el info.el syntax.c vc-hooks.el xdisp.c
- sh-script.el and 518 other files
+ keyboard.c fill.el keymap.c tex-mode.el alloc.c compile.el files.el
+ regex.c simple.el easy-mmode.el syntax.c vc-hooks.el info.el xdisp.c
+ sh-script.el and 519 other files
Steinar Bang: changed imap.el
Stephen A. Wood: changed fortran.el
-Stephen Berman: changed allout.el recentf.el
+Stephen Berman: changed allout.el find-dired.el recentf.el
Stephen C. Gilardi: changed configure.in
Steven E. Harris: changed nnheader.el
-Steven Huwig: changed python.el
+Steven Huwig: changed emacs.py python.el
Steven L. Baur: wrote earcon.el footnote.el gnus-audio.el gnus-setup.el
and changed gnus-xmas.el gnus-msg.el add-log.el dgnushack.el edebug.el
Terry Jones: wrote shadow.el
-Tetsurou Okazaki: changed xterm.c
+Tetsurou Okazaki: changed log-edit.el xterm.c
Theodore Jump: changed w32-win.el w32faces.c
Toshiaki Nomura: changed uxpds.h
+Trent Buck: changed rcirc.el
+
Trey Jackson: changed spam-stat.el
Triet Hoai Lai: changed vntelex.el viet-util.el vietnamese.el
Ulrich Leodolter: changed w32proc.c
-Ulrich Mueller: changed gud.el Makefile.in case-table.el fortran.el
- iso-acc.el sysdep.c
+Ulrich Mueller: changed gud.el Makefile.in XMakeAssoc.c case-table.el
+ fortran.el iso-acc.el sysdep.c
Ulrik Vieth: wrote meta-mode.el
and changed files.el
and changed TUTORIAL.de Makefile.in calc.texi chinese.el czech.el
european.el idlwave.el reftex-vars.el reftex.el reftex.texi slovak.el
supercite.el .cvsignore advice.el calc-forms.el calc-sel.el calendar.el
- china-util.el cl-macs.el cl.texi complete.el and 43 other files
+ china-util.el cl-macs.el cl.texi complete.el and 44 other files
Wes Hardaker: changed gnus-score.el gnus-art.el gnus-sum.el gnus-win.el
Yamamoto Mitsuharu: changed macterm.c macfns.c mac-win.el mac.c macterm.h
macmenu.c macgui.h image.c macselect.c keyboard.c xdisp.c makefile.MPW
- config.h emacs.c Makefile.in macos.texi darwin.h xfaces.c INSTALL
+ config.h emacs.c INSTALL Makefile.in macos.texi darwin.h xfaces.c
dispnew.c alloc.c and 77 other files
Yann Dirson: changed imenu.el
+Yavor Doganov: changed emacs.1 etags.1
+
Yoichi Nakayama: changed browse-url.el finder.el man.el rfc2368.el
Yoni Rabkin Katzenell: changed faces.el whitespace.el
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * Version 22.1 released.
+
+2007-05-03 Glenn Morris <rgm@gnu.org>
+
+ * configure: Tweak message about the absence of shell functions.
+
+2007-04-24 Juanma Barranquero <lekktu@gmail.com>
+
+ * INSTALL (DETAILED BUILDING AND INSTALLATION): Fix typo.
+
2007-04-19 Glenn Morris <rgm@gnu.org>
* configure.in: Signal error if Xaw libs are missing in a Lucid
* configure.in: Restore support for hp800 (removed 2007-01-27)
following clarification of legal status.
-2007-03-22 Joe Buehler <jbuehler@spirentcom.com> (tiny change)
+2007-03-22 Joe Buehler <jbuehler@spirentcom.com> (tiny change)
* configure.in: Add support for AIX4.3 on IBM RS6000.
--without-png for PNG image support
Use --without-toolkit-scroll-bars to disable LessTif/Motif or Xaw3d
-scroll bars.
+scroll bars.
Use --without-xim to inhibit the default use of X Input Methods. In
this case, the X resource useXIM can be used to turn on use of XIM.
Use --disable-largefile omits support for files larger than 2GB on
-systems which support that.
+systems which support that.
Use --without-sound to disable sound support.
directories for some header files, or link against optional
libraries, or use special compilation options. You can force
`configure' and the build process which follows it to do that by
-setting the variables CPPFLGS, CFLAGS, LDFLAGS, LIBS, CPP and CC before
-running `configure'. CPP is the command which invokes the
+setting the variables CPPFLAGS, CFLAGS, LDFLAGS, LIBS, CPP and CC
+before running `configure'. CPP is the command which invokes the
preprocessor, CPPFLAGS lists the options passed to it, CFLAGS are
compilation options, LDFLAGS are options used when linking, LIBS are
libraries to link against, and CC is the command which invokes the
switch to the compiler, and link against libfoo.a and libbar.a
libraries in addition to the standard ones.
-For some libraries, like Gtk+, fontconfig and ALSA, `configure' use
-pkg-config to find where those libraries are installed.
-If you want pkg-config to look in special directories, you have to set
-the environment variable PKG_CONFIG_PATH to point to the directories
+For some libraries, like Gtk+, fontconfig and ALSA, `configure' use
+pkg-config to find where those libraries are installed.
+If you want pkg-config to look in special directories, you have to set
+the environment variable PKG_CONFIG_PATH to point to the directories
where the .pc-files for those libraries are.
For example:
See the end of the file for license conditions.
-This directory tree holds version 22.0.99 of GNU Emacs, the extensible,
+This directory tree holds version 22.1 of GNU Emacs, the extensible,
customizable, self-documenting real-time display editor.
The file INSTALL in this directory says how to build and install GNU
fi
test \$exitcode = 0") || {
- echo No shell found that supports shell functions.
- echo Please tell autoconf@gnu.org about your system,
- echo including any error possibly output before this
- echo message
+ echo Please tell bug-autoconf@gnu.org about your system,
+ echo including any error possibly output before this message.
+ echo This can help us improve future autoconf versions.
+ echo Configuration will now proceed without shell functions.
}
PKG_CONFIG
ALSA_CFLAGS
ALSA_LIBS
-
CFLAGS_SOUND
SET_MAKE
XMKMF
#define HAVE_ALSA 1
_ACEOF
-
fi
fi
LIBSOUND="$LIBSOUND $ALSA_LIBS"
CFLAGS_SOUND="$CFLAGS_SOUND $ALSA_CFLAGS"
AC_DEFINE(HAVE_ALSA, 1, [Define to 1 if ALSA is available.])
- AC_SUBST()
fi
AC_SUBST(CFLAGS_SOUND)
fi
-2007-04-24 Chong Yidong <cyd@stupidchicken.com>
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
- * emacs.py: File removed due to unclear legal issues.
+ * Version 22.1 released.
+
+2007-06-02 CHENG Gao <chenggao@gmail.com>
+
+ * MORE.STUFF: Remove dead URL for Fortune, and update URLs for
+ Hideshow, Org, EDB, and Remember.
+
+2007-05-29 Robert J. Chassell <bob@rattlesnake.com>
+
+ * NEWS: Fix instances of `allow' without object.
+
+2007-05-17 Glenn Morris <rgm@gnu.org>
+
+ * PROBLEMS (Dumping): Mention OpenBSD macppc problem.
+
+2007-05-15 Micha\e,Ak\e(Bl Cadilhac <michael@cadilhac.name>
+
+ * fr-refcard.tex: Rewrite using German layout.
+
+ * fr-refcard.ps: Regenerate.
+
+2007-05-12 Richard Stallman <rms@gnu.org>
+
+ * refcard.tex (section{Incremental Search}): Minor corrections.
+
+2007-05-12 Micha\e,Ak\e(Bl Cadilhac <michael@cadilhac.name>
+
+ * Makefile (viperCard.ps, calccard.ps refcard.ps)
+ (sk-dired-ref.ps sk-refcard.ps sk-survival.ps)
+ (de-refcard.ps fr-refcard.ps pt-br-refcard.ps orgcard.ps): Use an
+ explicit output argument for `dvips'.
+
+2007-05-05 Glenn Morris <rgm@gnu.org>
+
+ * NEWS: Re-order.
+
+2007-04-28 Glenn Morris <rgm@gnu.org>
+
+ * emacs.py: Restore file pending consideration of python.el legal
+ status.
+ * NEWS: Restore mention of python.el pending consideration of
+ legal status.
+
+2007-04-28 David R. Linn <drl@jekyll.vuse.vanderbilt.edu>
+
+ * PROBLEMS: Add section on Solaris out-of-tree install issues with
+ non-GNU make.
+
+2007-04-25 Werner Lemberg <wl@gnu.org>
+
+ * emacs.1: Replace -- with \(em.
+
+2007-04-25 Yavor Doganov <yavor@gnu.org> (tiny change)
+
+ * emacs.1, etags.1: Escape some minus signs.
2007-04-22 Glenn Morris <rgm@gnu.org>
* Expand: <URL:http://w3.teaser.fr/%7Eflepied/expand.el.gz>
- * Fortune: <URL:http://www.coling.uni-freiburg.de/%7Eschauer/emacs.html>
-
* Gnus: <URL:http://www.gnus.org/>
* Ffap: <URL:http://www.mathcs.emory.edu/%7Emic/ftp/emacs/>
(And some addons for it.)
- * Hideshow: <URL:http://www.glug.org/people/ttn/software/hideshow/>
+ * Hideshow: <URL:http://staff.science.uva.nl/~dominik/Tools/org/>
* Ispell: <URL:http://www.eng.utah.edu/~kstevens/ispell-page.html>
* MH-E: <URL:http://mh-e.sourceforge.net/>
+ * Org mode: <URL:http://staff.science.uva.nl/~dominik/Tools/org/>
+
* PS mode: <URL:http://odur.let.rug.nl/%7Ekleiweg/postscript/>
* PS-print: <URL:http://www.emacswiki.org/cgi-bin/wiki/PsPrintPackage>
* ECB: Emacs Code Browser: <URL:http://ecb.sourceforge.net/>
- * EDB: database: <URL:http://www.glug.org/people/ttn/software/edb/>
+ * EDB: database: <URL:http://www.gnuvola.org/software/edb/>
* Ee: categorizing information manager:
<URL:http://www.jurta.org/emacs/ee/>
DTD-aware serious SGML/XML editing.
* Quack: <URL:http://www.neilvandyke.org/quack/>
- Quack enhances Emacs support for Scheme
+ Quack enhances Emacs support for Scheme.
- * Remember:
- <URL:http://sacha.free.net.ph/notebook/wiki/RememberEl.php>
+ * Remember: <URL:https://gna.org/p/remember-el>
+ A Personal Information Manager (PIM) for Emacs.
* Session: <URL:http://emacs-session.sourceforge.net/>
Session Management for Emacs.
## A4, landscape.
de-refcard.ps fr-refcard.ps pt-br-refcard.ps orgcard.ps: %.ps: %.dvi
- dvips -t a4 -t landscape $<
+ dvips -t a4 -t landscape $< -o $@
## A4, portrait.
cs-dired-ref.ps cs-refcard.ps cs-survival.ps fr-drdref.ps \
pl-refcard.ps ru-refcard.ps \
sk-dired-ref.ps sk-refcard.ps sk-survival.ps: %.ps: %.dvi
- dvips -t a4 $<
+ dvips -t a4 $< -o $@
## letter, landscape.
calccard.ps refcard.ps: %.ps: %.dvi
- dvips -t letter -t landscape $<
+ dvips -t letter -t landscape $< -o $@
## letter, portrait.
dired-ref.ps gnus-booklet.ps gnus-refcard.ps survival.ps vipcard.ps \
viperCard.ps: %.ps: %.dvi
- dvips -t letter $<
+ dvips -t letter $< -o $@
.PHONY: mostlyclean clean distclean maintainer-clean unlock relock
** cua.el, cua-mode.el: remove old versions.
-** python-mode.el: Use python.el, available at
- http://www.emacswiki.org/cgi-bin/wiki/PythonMode
-
\f
* Installation Changes in Emacs 22.1
when you run configure. This requires Gtk+ 2.4 or newer. This port
provides a way to display multilingual text in menus (with some caveats).
-** Emacs comes with a new set of icons.
-These icons are displayed on the taskbar and/or titlebar when Emacs
-runs in a graphical environment. Source files for these icons can be
-found in etc/images/icons. (You can't change the icons displayed by
-Emacs by changing these files directly. On X, the icon is compiled
-into the Emacs executable; see gnu.h in the source tree. On MS
-Windows, see nt/icons/emacs.ico.)
-
** The Emacs Lisp Reference Manual is now part of the distribution.
The Emacs Lisp Reference Manual in Info format is built as part of the
You no longer need to download a separate tarball in order to build
Emacs with Leim.
-** New translations of the Emacs Tutorial are available in the
-following languages: Brasilian Portuguese, Bulgarian, Chinese (both
-with simplified and traditional characters), French, Russian, and
-Italian. Type `C-u C-h t' to choose one of them in case your language
-setup doesn't automatically select the right one.
-
-** New translations of the Emacs reference card are available in the
-Brasilian Portuguese and Russian. The corresponding PostScript files
-are also included.
+** Support for MacOS X was added.
+See the files mac/README and mac/INSTALL for build instructions.
-** A French translation of the `Emacs Survival Guide' is available.
+** Mac OS 9 port now uses the Carbon API by default. You can also
+create a non-Carbon build by specifying `NonCarbon' as a target. See
+the files mac/README and mac/INSTALL for build instructions.
-** Emacs now includes support for loading image libraries on demand.
-(Currently this feature is only used on MS Windows.) You can configure
-the supported image types and their associated dynamic libraries by
-setting the variable `image-library-alist'.
+** Support for a Cygwin build of Emacs was added.
** Support for GNU/Linux systems on X86-64 machines was added.
** Support for FreeBSD/Alpha has been added.
-** Support for a Cygwin build of Emacs was added.
-
-** Support for MacOS X was added.
-See the files mac/README and mac/INSTALL for build instructions.
-
-** Mac OS 9 port now uses the Carbon API by default. You can also
-create a non-Carbon build by specifying `NonCarbon' as a target. See
-the files mac/README and mac/INSTALL for build instructions.
+** New translations of the Emacs Tutorial are available in the
+following languages: Brasilian Portuguese, Bulgarian, Chinese (both
+with simplified and traditional characters), French, Russian, and
+Italian. Type `C-u C-h t' to choose one of them in case your language
+setup doesn't automatically select the right one.
-** The `emacsserver' program has been removed, replaced with Lisp code.
+** New translations of the Emacs reference card are available in the
+Brasilian Portuguese and Russian. The corresponding PostScript files
+are also included.
-** The `yow' program has been removed.
-Use the corresponding Emacs feature instead.
+** A French translation of the `Emacs Survival Guide' is available.
** Emacs now supports new configure options `--program-prefix',
`--program-suffix' and `--program-transform-name' that affect the names of
to a game user is not available, then scores will be stored separately
in each user's home directory.
+** Emacs now includes support for loading image libraries on demand.
+(Currently this feature is only used on MS Windows.) You can configure
+the supported image types and their associated dynamic libraries by
+setting the variable `image-library-alist'.
+
** Emacs can now be built without sound support.
-** Building with -DENABLE_CHECKING does not automatically build with union
-types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
+** Emacs Lisp source files are compressed by default if `gzip' is available.
-** When pure storage overflows while dumping, Emacs now prints how
-much pure storage it will approximately need.
+** All images used in Emacs have been consolidated in etc/images and subdirs.
+See also the changes to `find-image', documented below.
-** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the
-contents of buffers from a core dump and save them to files easily, should
-Emacs crash.
+** Emacs comes with a new set of icons.
+These icons are displayed on the taskbar and/or titlebar when Emacs
+runs in a graphical environment. Source files for these icons can be
+found in etc/images/icons. (You can't change the icons displayed by
+Emacs by changing these files directly. On X, the icon is compiled
+into the Emacs executable; see gnu.h in the source tree. On MS
+Windows, see nt/icons/emacs.ico.)
+
+** The `emacsserver' program has been removed, replaced with Lisp code.
+
+** The `yow' program has been removed.
+Use the corresponding Emacs feature instead.
** The Emacs terminal emulation in term.el uses a different terminfo name.
The Emacs terminal emulation in term.el now uses "eterm-color" as its
terminfo name, since term.el now supports color.
-** Emacs Lisp source files are compressed by default if `gzip' is available.
+** The script etc/emacs-buffer.gdb can be used with gdb to retrieve the
+contents of buffers from a core dump and save them to files easily, should
+Emacs crash.
-** All images used in Emacs have been consolidated in etc/images and subdirs.
-See also the changes to `find-image', documented below.
+** Building with -DENABLE_CHECKING does not automatically build with union
+types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
+
+** When pure storage overflows while dumping, Emacs now prints how
+much pure storage it will approximately need.
\f
* Startup Changes in Emacs 22.1
-** New command line option -Q or --quick.
-This is like using -q --no-site-file, but in addition it also disables
-the fancy startup screen.
+** Init file changes
+If the init file ~/.emacs does not exist, Emacs will try
+~/.emacs.d/init.el or ~/.emacs.d/init.elc. Likewise, if the shell init file
+~/.emacs_SHELL is not found, Emacs will try ~/.emacs.d/init_SHELL.sh.
-** New command line option -D or --basic-display.
-Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
-the blinking cursor.
+** Emacs can now be invoked in full-screen mode on a windowed display.
+When Emacs is invoked on a window system, the new command-line options
+`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
+whose width, height, or both width and height take up the entire
+screen size. (For now, this does not work with some window managers.)
+
+** Emacs now displays a splash screen by default even if command-line
+arguments were given. The new command-line option --no-splash
+disables the splash screen; see also the variable
+`inhibit-splash-screen' (which is also aliased as
+`inhibit-startup-message').
+
+** New user option `inhibit-startup-buffer-menu'.
+When loading many files, for instance with `emacs *', Emacs normally
+displays a buffer menu. This option turns the buffer menu off.
** New command line option -nbc or --no-blinking-cursor disables
the blinking cursor on graphical terminals.
#!/usr/bin/emacs --script
+** The -f option, used from the command line to call a function,
+now reads arguments for the function interactively if it is
+an interactively callable function.
+
** The option --directory DIR now modifies `load-path' immediately.
Directories are added to the front of `load-path' in the order they
appear on the command line. For example, with this command line:
Emacs looks for library `foo' in the parent directory, then in /tmp, then
in the other directories in `load-path'. (-L is short for --directory.)
-** The command line option --no-windows has been changed to
---no-window-system. The old one still works, but is deprecated.
-
-** If the environment variable DISPLAY specifies an unreachable X display,
-Emacs will now startup as if invoked with the --no-window-system option.
-
-** The -f option, used from the command line to call a function,
-now reads arguments for the function interactively if it is
-an interactively callable function.
-
** When you specify a frame size with --geometry, the size applies to
all frames you create. A position specified with --geometry only
affects the initial frame.
command-line option), Emacs leaves the frame position to the Windows'
window manager.
-** Emacs can now be invoked in full-screen mode on a windowed display.
-When Emacs is invoked on a window system, the new command-line options
-`--fullwidth', `--fullheight', and `--fullscreen' produce a frame
-whose width, height, or both width and height take up the entire
-screen size. (For now, this does not work with some window managers.)
-
-** Emacs now displays a splash screen by default even if command-line
-arguments were given. The new command-line option --no-splash
-disables the splash screen; see also the variable
-`inhibit-splash-screen' (which is also aliased as
-`inhibit-startup-message').
-
-** The default is now to use a bitmap as the icon.
-The command-line options --icon-type, -i have been replaced with
-options --no-bitmap-icon, -nbi to turn the bitmap icon off.
-
-** New user option `inhibit-startup-buffer-menu'.
-When loading many files, for instance with `emacs *', Emacs normally
-displays a buffer menu. This option turns the buffer menu off.
+** The command line option --no-windows has been changed to
+--no-window-system. The old one still works, but is deprecated.
-** Init file changes
-If the init file ~/.emacs does not exist, Emacs will try
-~/.emacs.d/init.el or ~/.emacs.d/init.elc. Likewise, if the shell init file
-~/.emacs_SHELL is not found, Emacs will try ~/.emacs.d/init_SHELL.sh.
+** If the environment variable DISPLAY specifies an unreachable X display,
+Emacs will now startup as if invoked with the --no-window-system option.
** Emacs now reads the standard abbrevs file ~/.abbrev_defs
automatically at startup, if it exists. When Emacs offers to save
can do this either silently or asking for confirmation first,
according to the value of `save-abbrevs'.
+** New command line option -Q or --quick.
+This is like using -q --no-site-file, but in addition it also disables
+the fancy startup screen.
+
+** New command line option -D or --basic-display.
+Disables the menu-bar, the tool-bar, the scroll-bars, tool tips, and
+the blinking cursor.
+
+** The default is now to use a bitmap as the icon.
+The command-line options --icon-type, -i have been replaced with
+options --no-bitmap-icon, -nbi to turn the bitmap icon off.
+
** If the environment variable EMAIL is defined, Emacs now uses its value
to compute the default value of `user-mail-address', in preference to
concatenation of `user-login-name' with the name of your host machine.
See below for more details.
+** When the undo information of the current command gets really large
+(beyond the value of `undo-outer-limit'), Emacs discards it and warns
+you about it.
+
+** When Emacs prompts for file names, SPC no longer completes the file name.
+This is so filenames with embedded spaces could be input without the
+need to quote the space with a C-q. The underlying changes in the
+keymaps that are active in the minibuffer are described below under
+"New keymaps for typing file names".
+
+** The completion commands TAB, SPC and ? in the minibuffer apply only
+to the text before point. If there is text in the buffer after point,
+it remains unchanged.
+
+** In incremental search, C-w is changed. M-%, C-M-w and C-M-y are special.
+
+See below under "incremental search changes".
+
** M-g is now a prefix key.
M-g g and M-g M-g run goto-line.
M-g n and M-g M-n run next-error (like C-x `).
** M-o now is the prefix key for setting text properties;
M-o M-o requests refontification.
-** The old bindings C-M-delete and C-M-backspace have been deleted,
-since there are situations where one or the other will shut down
-the operating system or your X server.
-
-** When the undo information of the current command gets really large
-(beyond the value of `undo-outer-limit'), Emacs discards it and warns
-you about it.
-
-** In incremental search, C-w is changed. M-%, C-M-w and C-M-y are special.
-
-See below under "incremental search changes".
-
-** When Emacs prompts for file names, SPC no longer completes the file name.
-This is so filenames with embedded spaces could be input without the
-need to quote the space with a C-q. The underlying changes in the
-keymaps that are active in the minibuffer are described below under
-"New keymaps for typing file names".
-
** C-x C-f RET (find-file), typing nothing in the minibuffer, is no longer
a special case.
You can get the old behavior by typing C-x C-f M-n RET, which fetches
the actual file name into the minibuffer.
-** The completion commands TAB, SPC and ? in the minibuffer apply only
-to the text before point. If there is text in the buffer after point,
-it remains unchanged.
-
** In Dired's ! command (dired-do-shell-command), `*' and `?' now
control substitution of the file names only when they are surrounded
by whitespace. This means you can now use them as shell wildcards
** Adaptive filling misfeature removed.
It no longer treats `NNN.' or `(NNN)' as a prefix.
+** The old bindings C-M-delete and C-M-backspace have been deleted,
+since there are situations where one or the other will shut down
+the operating system or your X server.
+
** The register compatibility key bindings (deprecated since Emacs 19)
have been removed:
C-x / point-to-register (Use: C-x r SPC)
\f
* Editing Changes in Emacs 22.1
+** The max size of buffers and integers has been doubled.
+On 32bit machines, it is now 256M (i.e. 268435455).
+
** !MEM FULL! at the start of the mode line indicates that Emacs
cannot get any more memory for Lisp data. This often means it could
crash soon if you do things that use more memory. On most systems,
not make !MEM FULL! disappear, you should save your work and start
a new Emacs.
-** The max size of buffers and integers has been doubled.
-On 32bit machines, it is now 256M (i.e. 268435455).
+** `undo-only' does an undo which does not redo any previous undo.
-** You can now switch buffers in a cyclic order with C-x C-left
-(previous-buffer) and C-x C-right (next-buffer). C-x left and
-C-x right can be used as well. The functions keep a different buffer
-cycle for each frame, using the frame-local buffer list.
+** Yanking text now discards certain text properties that can
+be inconvenient when you did not expect them. The variable
+`yank-excluded-properties' specifies which ones. Insertion
+of register contents and rectangles also discards these properties.
-** `undo-only' does an undo which does not redo any previous undo.
+** New command `kill-whole-line' kills an entire line at once.
+By default, it is bound to C-S-<backspace>.
** M-SPC (just-one-space) when given a numeric argument N
converts whitespace around point to N spaces.
+** You can now switch buffers in a cyclic order with C-x C-left
+(previous-buffer) and C-x C-right (next-buffer). C-x left and
+C-x right can be used as well. The functions keep a different buffer
+cycle for each frame, using the frame-local buffer list.
+
** C-x 5 C-o displays a specified buffer in another frame
but does not switch to that frame. It's the multi-frame
analogue of C-x 4 C-o.
-** New command `kill-whole-line' kills an entire line at once.
-By default, it is bound to C-S-<backspace>.
-
-** Yanking text now discards certain text properties that can
-be inconvenient when you did not expect them. The variable
-`yank-excluded-properties' specifies which ones. Insertion
-of register contents and rectangles also discards these properties.
-
-** The default values of paragraph-start and indent-line-function have
-been changed to reflect those used in Text mode rather than those used
-in Indented-Text mode.
+** `special-display-buffer-names' and `special-display-regexps' now
+understand two new boolean pseudo-frame-parameters `same-frame' and
+`same-window'.
** New commands to operate on pairs of open and close characters:
`insert-pair', `delete-pair', `raise-sexp'.
now refer to the value of environment variable foo. To include a `$'
in the value, use `$$'.
-** `special-display-buffer-names' and `special-display-regexps' now
-understand two new boolean pseudo-frame-parameters `same-frame' and
-`same-window'.
+** The default values of paragraph-start and indent-line-function have
+been changed to reflect those used in Text mode rather than those used
+in Paragraph-Indent Text mode.
** The default for the paper size (variable ps-paper-type) is taken
from the locale.
-** Mark command changes:
+** Help command changes:
-*** A prefix argument is no longer required to repeat a jump to a
-previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the
-mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump.
-
-*** Marking commands extend the region when invoked multiple times.
-
-If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h
-(mark-paragraph), or C-M-h (mark-defun) repeatedly, the marked region
-extends each time, so you can mark the next two sexps with M-C-SPC
-M-C-SPC, for example. This feature also works for
-mark-end-of-sentence, if you bind that to a key. It also extends the
-region when the mark is active in Transient Mark mode, regardless of
-the last command. To start a new region with one of marking commands
-in Transient Mark mode, you can deactivate the active region with C-g,
-or set the new mark with C-SPC.
-
-*** M-h (mark-paragraph) now accepts a prefix arg.
-
-With positive arg, M-h marks the current and the following paragraphs;
-if the arg is negative, it marks the current and the preceding
-paragraphs.
-
-*** Some commands do something special in Transient Mark mode when the
-mark is active--for instance, they limit their operation to the
-region. Even if you don't normally use Transient Mark mode, you might
-want to get this behavior from a particular command. There are two
-ways you can enable Transient Mark mode and activate the mark, for one
-command only.
-
-One method is to type C-SPC C-SPC; this enables Transient Mark mode
-and sets the mark at point. The other method is to type C-u C-x C-x.
-This enables Transient Mark mode temporarily but does not alter the
-mark or the region.
-
-After these commands, Transient Mark mode remains enabled until you
-deactivate the mark. That typically happens when you type a command
-that alters the buffer, but you can also deactivate the mark by typing
-C-g.
-
-*** Movement commands `beginning-of-buffer', `end-of-buffer',
-`beginning-of-defun', `end-of-defun' do not set the mark if the mark
-is already active in Transient Mark mode.
-
-** Help command changes:
-
-*** Changes in C-h bindings:
+*** Changes in C-h bindings:
C-h e displays the *Messages* buffer.
- C-h w and C-h f new-kill-line reports:
new-kill-line is on C-k
+*** The apropos commands now accept a list of words to match.
+When more than one word is specified, at least two of those words must
+be present for an item to match. Regular expression matching is still
+available.
+
+*** The new option `apropos-sort-by-scores' causes the matching items
+to be sorted according to their score. The score for an item is a
+number calculated to indicate how well the item matches the words or
+regular expression that you entered to the apropos command. The best
+match is listed first, and the calculated score is shown for each
+matching item.
+
*** Help commands `describe-function' and `describe-key' now show function
arguments in lowercase italics on displays that support it. To change the
default, customize face `help-argument-name' or redefine the function
`help-echo' property, but, in certain cases, it can display a more
keyboard oriented alternative.
-*** New user option `help-at-pt-display-when-idle' allows to
+*** New user option `help-at-pt-display-when-idle' allows you to
automatically show the help provided by `display-local-help' on
point-over, after suitable idle time. The amount of idle time is
determined by the user option `help-at-pt-timer-delay' and defaults
to one second. This feature is turned off by default.
-*** The apropos commands now accept a list of words to match.
-When more than one word is specified, at least two of those words must
-be present for an item to match. Regular expression matching is still
-available.
+** Mark command changes:
-*** The new option `apropos-sort-by-scores' causes the matching items
-to be sorted according to their score. The score for an item is a
-number calculated to indicate how well the item matches the words or
-regular expression that you entered to the apropos command. The best
-match is listed first, and the calculated score is shown for each
-matching item.
+*** A prefix argument is no longer required to repeat a jump to a
+previous mark, i.e. C-u C-SPC C-SPC C-SPC ... cycles through the
+mark ring. Use C-u C-u C-SPC to set the mark immediately after a jump.
+
+*** Marking commands extend the region when invoked multiple times.
+
+If you type C-M-SPC (mark-sexp), M-@ (mark-word), M-h
+(mark-paragraph), or C-M-h (mark-defun) repeatedly, the marked region
+extends each time, so you can mark the next two sexps with M-C-SPC
+M-C-SPC, for example. This feature also works for
+mark-end-of-sentence, if you bind that to a key. It also extends the
+region when the mark is active in Transient Mark mode, regardless of
+the last command. To start a new region with one of marking commands
+in Transient Mark mode, you can deactivate the active region with C-g,
+or set the new mark with C-SPC.
+
+*** Some commands do something special in Transient Mark mode when the
+mark is active--for instance, they limit their operation to the
+region. Even if you don't normally use Transient Mark mode, you might
+want to get this behavior from a particular command. There are two
+ways you can enable Transient Mark mode and activate the mark, for one
+command only.
+
+One method is to type C-SPC C-SPC; this enables Transient Mark mode
+and sets the mark at point. The other method is to type C-u C-x C-x.
+This enables Transient Mark mode temporarily but does not alter the
+mark or the region.
+
+After these commands, Transient Mark mode remains enabled until you
+deactivate the mark. That typically happens when you type a command
+that alters the buffer, but you can also deactivate the mark by typing
+C-g.
+
+*** Movement commands `beginning-of-buffer', `end-of-buffer',
+`beginning-of-defun', `end-of-defun' do not set the mark if the mark
+is already active in Transient Mark mode.
+
+*** M-h (mark-paragraph) now accepts a prefix arg.
+
+With positive arg, M-h marks the current and the following paragraphs;
+if the arg is negative, it marks the current and the preceding
+paragraphs.
** Incremental Search changes:
-*** Vertical scrolling is now possible within incremental search.
-To enable this feature, customize the new user option
-`isearch-allow-scroll'. User written commands which satisfy stringent
-constraints can be marked as "scrolling commands". See the Emacs manual
-for details.
+*** M-% typed in isearch mode invokes `query-replace' or
+`query-replace-regexp' (depending on search mode) with the current
+search string used as the string to replace.
*** C-w in incremental search now grabs either a character or a word,
making the decision in a heuristic way. This new job is done by the
Another method to grab a character is to enter the minibuffer by `M-e'
and to type `C-f' at the end of the search string in the minibuffer.
-*** M-% typed in isearch mode invokes `query-replace' or
-`query-replace-regexp' (depending on search mode) with the current
-search string used as the string to replace.
+*** Vertical scrolling is now possible within incremental search.
+To enable this feature, customize the new user option
+`isearch-allow-scroll'. User written commands which satisfy stringent
+constraints can be marked as "scrolling commands". See the Emacs manual
+for details.
*** Isearch no longer adds `isearch-resume' commands to the command
history by default. To enable this feature, customize the new
** Replace command changes:
-*** New user option `query-replace-skip-read-only': when non-nil,
-`query-replace' and related functions simply ignore
-a match if part of it has a read-only property.
-
*** When used interactively, the commands `query-replace-regexp' and
`replace-regexp' allow \,expr to be used in a replacement string,
where expr is an arbitrary Lisp expression evaluated at replacement
*** The current match in query-replace is highlighted in new face
`query-replace' which by default inherits from isearch face.
-** Local variables lists:
-
-*** In processing a local variables list, Emacs strips the prefix and
-suffix from every line before processing all the lines.
-
-*** Text properties in local variables.
+*** New user option `query-replace-skip-read-only': when non-nil,
+`query-replace' and related functions simply ignore
+a match if part of it has a read-only property.
-A file local variables list cannot specify a string with text
-properties--any specified text properties are discarded.
+** Local variables lists:
*** If the local variables list contains any variable-value pairs that
are not known to be safe, Emacs shows a prompt asking whether to apply
If the form is not "ok to call", that means Emacs asks for
confirmation as before.
+*** In processing a local variables list, Emacs strips the prefix and
+suffix from every line before processing all the lines.
+
+*** Text properties in local variables.
+
+A file local variables list cannot specify a string with text
+properties--any specified text properties are discarded.
+
** File operation changes:
*** Unquoted `$' in file names do not signal an error any more when
Instead, the `$ENVVAR' text is left as is, so that `$$' quoting
is only rarely needed.
-*** find-file-read-only visits multiple files in read-only mode,
-when the file name contains wildcard characters.
-
-*** find-alternate-file replaces the current file with multiple files,
-when the file name contains wildcard characters. It now asks if you
-wish save your changes and not just offer to kill the buffer.
-
-*** Auto Compression mode is now enabled by default.
-
*** C-x C-f RET, typing nothing in the minibuffer, is no longer a special case.
Since the default input is the current directory, this has the effect
of specifying the current directory. Normally that means to visit the
directory with Dired.
-*** When you are root, and you visit a file whose modes specify
-read-only, the Emacs buffer is now read-only too. Type C-x C-q if you
-want to make the buffer writable. (As root, you can in fact alter the
-file.)
-
*** C-x s (save-some-buffers) now offers an option `d' to diff a buffer
against its file, so you can see what changes you would be saving.
+*** Auto Compression mode is now enabled by default.
+
+*** If the user visits a file larger than `large-file-warning-threshold',
+Emacs asks for confirmation.
+
*** The commands copy-file, rename-file, make-symbolic-link and
add-name-to-file, when given a directory as the "new name" argument,
convert it to a file name by merging in the within-directory part of
commands cp, mv, and ln follow.) Thus, M-x copy-file RET ~/foo RET
/tmp RET copies ~/foo to /tmp/foo.
-*** When used interactively, `format-write-file' now asks for confirmation
-before overwriting an existing file, unless a prefix argument is
-supplied. This behavior is analogous to `write-file'.
-
-*** The variable `auto-save-file-name-transforms' now has a third element that
-controls whether or not the function `make-auto-save-file-name' will
-attempt to construct a unique auto-save name (e.g. for remote files).
-
-*** The new option `write-region-inhibit-fsync' disables calls to fsync
-in `write-region'. This can be useful on laptops to avoid spinning up
-the hard drive upon each file save. Enabling this variable may result
-in data loss, use with care.
-
-*** If the user visits a file larger than `large-file-warning-threshold',
-Emacs asks for confirmation.
-
*** require-final-newline now has two new possible values:
`visit' means add a newline (as an undoable change) if it's needed
So you can customize mode-require-final-newline to control what these
modes do.
+*** When you are root, and you visit a file whose modes specify
+read-only, the Emacs buffer is now read-only too. Type C-x C-q if you
+want to make the buffer writable. (As root, you can in fact alter the
+file.)
+
+*** find-file-read-only visits multiple files in read-only mode,
+when the file name contains wildcard characters.
+
+*** find-alternate-file replaces the current file with multiple files,
+when the file name contains wildcard characters. It now asks if you
+wish save your changes and not just offer to kill the buffer.
+
+*** When used interactively, `format-write-file' now asks for confirmation
+before overwriting an existing file, unless a prefix argument is
+supplied. This behavior is analogous to `write-file'.
+
+*** The variable `auto-save-file-name-transforms' now has a third element that
+controls whether or not the function `make-auto-save-file-name' will
+attempt to construct a unique auto-save name (e.g. for remote files).
+
+*** The new option `write-region-inhibit-fsync' disables calls to fsync
+in `write-region'. This can be useful on laptops to avoid spinning up
+the hard drive upon each file save. Enabling this variable may result
+in data loss, use with care.
+
** Minibuffer changes:
+*** The completion commands TAB, SPC and ? in the minibuffer apply only
+to the text before point. If there is text in the buffer after point,
+it remains unchanged.
+
*** The new file-name-shadow-mode is turned ON by default, so that when
entering a file name, any prefix which Emacs will ignore is dimmed.
which do not end in a slash are never considered when a completion
candidate is a directory.
-*** The completion commands TAB, SPC and ? in the minibuffer apply only
-to the text before point. If there is text in the buffer after point,
-it remains unchanged.
-
*** New user option `history-delete-duplicates'.
If set to t when adding a new history element, all previous identical
elements are deleted from the history list.
** Redisplay changes:
-*** Preemptive redisplay now adapts to current load and bandwidth.
+*** The new face `mode-line-inactive' is used to display the mode line
+of non-selected windows. The `mode-line' face is now used to display
+the mode line of the currently selected window.
-To avoid preempting redisplay on fast computers, networks, and displays,
-the arrival of new input is now performed at regular intervals during
-redisplay. The new variable `redisplay-preemption-period' specifies
-the period; the default is to check for input every 0.1 seconds.
+The new variable `mode-line-in-non-selected-windows' controls whether
+the `mode-line-inactive' face is used.
*** The mode line position information now comes before the major mode.
When the file is maintained under version control, that information
appears between the position information and the major mode.
-*** New face `escape-glyph' highlights control characters and escape glyphs.
+*** You can now customize the use of window fringes. To control this
+for all frames, use M-x fringe-mode or the Show/Hide submenu of the
+top-level Options menu, or customize the `fringe-mode' variable. To
+control this for a specific frame, use the command M-x
+set-fringe-style.
-*** Non-breaking space and hyphens are now displayed with a special
-face, either nobreak-space or escape-glyph. You can turn this off or
-specify a different mode by setting the variable `nobreak-char-display'.
+*** Angle icons in the fringes can indicate the buffer boundaries. In
+addition, up and down arrow bitmaps in the fringe indicate which ways
+the window can be scrolled.
-*** The parameters of automatic hscrolling can now be customized.
-The variable `hscroll-margin' determines how many columns away from
-the window edge point is allowed to get before automatic hscrolling
-will horizontally scroll the window. The default value is 5.
+This behavior is activated by setting the buffer-local variable
+`indicate-buffer-boundaries' to a non-nil value. The default value of
+this variable is found in `default-indicate-buffer-boundaries'.
-The variable `hscroll-step' determines how many columns automatic
-hscrolling scrolls the window when point gets too close to the
-window edge. If its value is zero, the default, Emacs scrolls the
-window so as to center point. If its value is an integer, it says how
-many columns to scroll. If the value is a floating-point number, it
-gives the fraction of the window's width to scroll the window.
+If value is `left' or `right', both angle and arrow bitmaps are
+displayed in the left or right fringe, resp.
-The variable `automatic-hscrolling' was renamed to
-`auto-hscroll-mode'. The old name is still available as an alias.
-
-*** Moving or scrolling through images (and other lines) taller than
-the window now works sensibly, by automatically adjusting the window's
-vscroll property.
-
-*** New customize option `overline-margin' controls the space between
-overline and text.
-
-*** New variable `x-underline-at-descent-line' controls the relative
-position of the underline. When set, it overrides the
-`x-use-underline-position-properties' variables.
-
-*** The new face `mode-line-inactive' is used to display the mode line
-of non-selected windows. The `mode-line' face is now used to display
-the mode line of the currently selected window.
-
-The new variable `mode-line-in-non-selected-windows' controls whether
-the `mode-line-inactive' face is used.
-
-*** You can now customize the use of window fringes. To control this
-for all frames, use M-x fringe-mode or the Show/Hide submenu of the
-top-level Options menu, or customize the `fringe-mode' variable. To
-control this for a specific frame, use the command M-x
-set-fringe-style.
-
-*** Angle icons in the fringes can indicate the buffer boundaries. In
-addition, up and down arrow bitmaps in the fringe indicate which ways
-the window can be scrolled.
-
-This behavior is activated by setting the buffer-local variable
-`indicate-buffer-boundaries' to a non-nil value. The default value of
-this variable is found in `default-indicate-buffer-boundaries'.
-
-If value is `left' or `right', both angle and arrow bitmaps are
-displayed in the left or right fringe, resp.
-
-The value can also be an alist which specifies the presence and
-position of each bitmap individually.
+The value can also be an alist which specifies the presence and
+position of each bitmap individually.
For example, ((top . left) (t . right)) places the top angle bitmap
in left fringe, the bottom angle bitmap in right fringe, and both
The new user option 'overflow-newline-into-fringe' can be set to nil to
revert to the old behavior of continuing such lines.
-*** When a window has display margin areas, the fringes are now
-displayed between the margins and the buffer's text area, rather than
-outside those margins.
-
*** A window can now have individual fringe and scroll-bar settings,
in addition to the individual display margin settings.
horizontally or vertically, a saved window configuration is restored,
or when the frame is resized.
+*** When a window has display margin areas, the fringes are now
+displayed between the margins and the buffer's text area, rather than
+outside those margins.
+
+*** New face `escape-glyph' highlights control characters and escape glyphs.
+
+*** Non-breaking space and hyphens are now displayed with a special
+face, either nobreak-space or escape-glyph. You can turn this off or
+specify a different mode by setting the variable `nobreak-char-display'.
+
+*** The parameters of automatic hscrolling can now be customized.
+The variable `hscroll-margin' determines how many columns away from
+the window edge point is allowed to get before automatic hscrolling
+will horizontally scroll the window. The default value is 5.
+
+The variable `hscroll-step' determines how many columns automatic
+hscrolling scrolls the window when point gets too close to the
+window edge. If its value is zero, the default, Emacs scrolls the
+window so as to center point. If its value is an integer, it says how
+many columns to scroll. If the value is a floating-point number, it
+gives the fraction of the window's width to scroll the window.
+
+The variable `automatic-hscrolling' was renamed to
+`auto-hscroll-mode'. The old name is still available as an alias.
+
+*** Moving or scrolling through images (and other lines) taller than
+the window now works sensibly, by automatically adjusting the window's
+vscroll property.
+
+*** Preemptive redisplay now adapts to current load and bandwidth.
+
+To avoid preempting redisplay on fast computers, networks, and displays,
+the arrival of new input is now performed at regular intervals during
+redisplay. The new variable `redisplay-preemption-period' specifies
+the period; the default is to check for input every 0.1 seconds.
+
*** The %c and %l constructs are now ignored in frame-title-format.
Due to technical limitations in how Emacs interacts with windowing
systems, these constructs often failed to render properly, and could
will expand as needed, but not contract automatically. To contract
the tool bar, you must type C-l.
-** Cursor display changes:
-
-*** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
-now controlled by the variable `blink-cursor-alist'.
-
-*** The X resource cursorBlink can be used to turn off cursor blinking.
-
-*** Emacs can produce an underscore-like (horizontal bar) cursor.
-The underscore cursor is set by putting `(cursor-type . hbar)' in
-default-frame-alist. It supports variable heights, like the `bar'
-cursor does.
-
-*** Display of hollow cursors now obeys the buffer-local value (if any)
-of `cursor-in-non-selected-windows' in the buffer that the cursor
-appears in.
-
-*** The variable `cursor-in-non-selected-windows' can now be set to any
-of the recognized cursor types.
+*** New customize option `overline-margin' controls the space between
+overline and text.
-*** On text terminals, the variable `visible-cursor' controls whether Emacs
-uses the "very visible" cursor (the default) or the normal cursor.
+*** New variable `x-underline-at-descent-line' controls the relative
+position of the underline. When set, it overrides the
+`x-use-underline-position-properties' variables.
** New faces:
** Font-Lock (syntax highlighting) changes:
-*** M-o now is the prefix key for setting text properties;
-M-o M-o requests refontification.
-
*** All modes now support using M-x font-lock-mode to toggle
fontification, even those such as Occur, Info, and comint-derived
modes that do their own fontification in a special way.
fontification in Info, remove `turn-on-font-lock' from
`Info-mode-hook'.
-*** Font-Lock mode: in major modes such as Lisp mode, where some Emacs
-features assume that an open-paren in column 0 is always outside of
-any string or comment, Font-Lock now highlights any such open-paren in
-bold-red if it is inside a string or a comment, to indicate that it
-can cause trouble. You should rewrite the string or comment so that
-the open-paren is not in column 0.
+*** New standard font-lock face `font-lock-comment-delimiter-face'.
*** New standard font-lock face `font-lock-preprocessor-face'.
-*** New standard font-lock face `font-lock-comment-delimiter-face'.
-
*** Easy to overlook single character negation can now be font-locked.
You can use the new variable `font-lock-negation-char-face' and the face of
the same name to customize this. Currently the cc-modes, sh-script-mode,
cperl-mode and make-mode support this.
+*** Font-Lock mode: in major modes such as Lisp mode, where some Emacs
+features assume that an open-paren in column 0 is always outside of
+any string or comment, Font-Lock now highlights any such open-paren in
+bold-red if it is inside a string or a comment, to indicate that it
+can cause trouble. You should rewrite the string or comment so that
+the open-paren is not in column 0.
+
+*** M-o now is the prefix key for setting text properties;
+M-o M-o requests refontification.
+
*** The default settings for JIT stealth lock parameters are changed.
The default value for the user option jit-lock-stealth-time is now nil
instead of 3. This setting of jit-lock-stealth-time disables stealth
*** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
-*** You can exit dialog windows and menus by typing C-g.
-
*** The menu item "Open File..." has been split into two items, "New File..."
and "Open File...". "Open File..." now opens only existing files. This is
to support existing GUI file selection dialogs better.
by setting the variable `x-gtk-use-old-file-dialog' to t. Default is to use
the new dialog.
+*** You can exit dialog windows and menus by typing C-g.
+
+** Buffer Menu changes:
+
+*** The new options `buffers-menu-show-directories' and
+`buffers-menu-show-status' let you control how buffers are displayed
+in the menu dropped down when you click "Buffers" from the menu bar.
+
+`buffers-menu-show-directories' controls whether the menu displays
+leading directories as part of the file name visited by the buffer.
+If its value is `unless-uniquify', the default, directories are
+shown unless uniquify-buffer-name-style' is non-nil. The value of nil
+and t turn the display of directories off and on, respectively.
+
+`buffers-menu-show-status' controls whether the Buffers menu includes
+the modified and read-only status of the buffers. By default it is
+t, and the status is shown.
+
+Setting these variables directly does not take effect until next time
+the Buffers menu is regenerated.
+
+*** New command `Buffer-menu-toggle-files-only' toggles display of file
+buffers only in the Buffer Menu. It is bound to T in Buffer Menu
+mode.
+
+*** `buffer-menu' and `list-buffers' now list buffers whose names begin
+with a space, when those buffers are visiting files. Normally buffers
+whose names begin with space are omitted.
+
** Mouse changes:
*** You can now follow links by clicking Mouse-1 on the link.
shall not copy the selected text to the kill-ring by setting the new
variable mouse-drag-copy-region to nil.
-*** mouse-wheels can now scroll a specific fraction of the window
-(rather than a fixed number of lines) and the scrolling is `progressive'.
+*** Under X, mouse-wheel-mode is turned on by default.
*** Emacs ignores mouse-2 clicks while the mouse wheel is being moved.
ignored. You can customize this with the mouse-wheel-click-event and
mouse-wheel-inhibit-click-time variables.
-*** Under X, mouse-wheel-mode is turned on by default.
+*** mouse-wheels can now scroll a specific fraction of the window
+(rather than a fixed number of lines) and the scrolling is `progressive'.
** Multilingual Environment (Mule) changes:
or if the locale doesn't describe the character set actually generated
by the keyboard. See Info node `Unibyte Mode'.
+*** The new command `set-file-name-coding-system' (C-x RET F) sets
+coding system for encoding and decoding file names. A new menu item
+(Options->Mule->Set Coding Systems->For File Name) invokes this
+command.
+
*** The new command `revert-buffer-with-coding-system' (C-x RET r)
revisits the current file using a coding system that you specify.
*** New command `ucs-insert' inserts a character specified by its
unicode.
-*** The new command `set-file-name-coding-system' (C-x RET F) sets
-coding system for encoding and decoding file names. A new menu item
-(Options->Mule->Set Coding Systems->For File Name) invokes this
-command.
-
*** New command quail-show-key shows what key (or key sequence) to type
in the current input method to input a character at point.
You can go back to that backup value by selecting "Use Backup Value"
under the "[State]" button.
-** Buffer Menu changes:
-
-*** New command `Buffer-menu-toggle-files-only' toggles display of file
-buffers only in the Buffer Menu. It is bound to T in Buffer Menu
-mode.
-
-*** `buffer-menu' and `list-buffers' now list buffers whose names begin
-with a space, when those buffers are visiting files. Normally buffers
-whose names begin with space are omitted.
-
-*** The new options `buffers-menu-show-directories' and
-`buffers-menu-show-status' let you control how buffers are displayed
-in the menu dropped down when you click "Buffers" from the menu bar.
-
-`buffers-menu-show-directories' controls whether the menu displays
-leading directories as part of the file name visited by the buffer.
-If its value is `unless-uniquify', the default, directories are
-shown unless uniquify-buffer-name-style' is non-nil. The value of nil
-and t turn the display of directories off and on, respectively.
-
-`buffers-menu-show-status' controls whether the Buffers menu includes
-the modified and read-only status of the buffers. By default it is
-t, and the status is shown.
+** Dired mode:
-Setting these variables directly does not take effect until next time
-the Buffers menu is regenerated.
+*** In Dired's ! command (dired-do-shell-command), `*' and `?' now
+control substitution of the file names only when they are surrounded
+by whitespace. This means you can now use them as shell wildcards
+too. If you want to use just plain `*' as a wildcard, type `*""'; the
+double quotes make no difference in the shell, but they prevent
+special treatment in `dired-do-shell-command'.
-** Dired mode:
+*** The Dired command `dired-goto-file' is now bound to j, not M-g.
+This is to avoid hiding the global key binding of M-g.
*** New faces dired-header, dired-mark, dired-marked, dired-flagged,
dired-ignored, dired-directory, dired-symlink, dired-warning
*** New Dired command `dired-do-touch' (bound to T) changes timestamps
of marked files with the value entered in the minibuffer.
-*** The Dired command `dired-goto-file' is now bound to j, not M-g.
-This is to avoid hiding the global key binding of M-g.
-
-*** In Dired's ! command (dired-do-shell-command), `*' and `?' now
-control substitution of the file names only when they are surrounded
-by whitespace. This means you can now use them as shell wildcards
-too. If you want to use just plain `*' as a wildcard, type `*""'; the
-double quotes make no difference in the shell, but they prevent
-special treatment in `dired-do-shell-command'.
-
*** In Dired, the w command now stores the current line's file name
into the kill ring. With a zero prefix arg, it stores the absolute file name.
** Comint changes:
+*** The new INSIDE_EMACS environment variable is set to "t" in subshells
+running inside Emacs. This supersedes the EMACS environment variable,
+which will be removed in a future Emacs release. Programs that need
+to know whether they are started inside Emacs should check INSIDE_EMACS
+instead of EMACS.
+
*** The comint prompt can now be made read-only, using the new user
option `comint-prompt-read-only'. This is not enabled by default,
except in IELM buffers. The read-only status of IELM prompts can be
`comint-use-prompt-regexp'. The old name has been kept as an alias,
but declared obsolete.
-*** The new INSIDE_EMACS environment variable is set to "t" in subshells
-running inside Emacs. This supersedes the EMACS environment variable,
-which will be removed in a future Emacs release. Programs that need
-to know whether they are started inside Emacs should check INSIDE_EMACS
-instead of EMACS.
-
** M-x Compile changes:
*** M-x compile has become more robust and reliable
** Occur mode changes:
-*** In the *Occur* buffer, `o' switches to it in another window, and
-C-o displays the current line's occurrence in another window without
-switching to it.
-
-*** You can now use next-error (C-x `) and previous-error to advance to
-the next/previous matching line found by M-x occur.
-
*** The new command `multi-occur' is just like `occur', except it can
search multiple buffers. There is also a new command
`multi-occur-in-matching-buffers' which allows you to specify the
Occur mode has been rewritten, and now uses font-lock, among other
changes.
+*** You can now use next-error (C-x `) and previous-error to advance to
+the next/previous matching line found by M-x occur.
+
+*** In the *Occur* buffer, `o' switches to it in another window, and
+C-o displays the current line's occurrence in another window without
+switching to it.
+
** Grep changes:
*** Grep has been decoupled from compilation mode setup.
Hits are fontified in green, and hits in binary files in orange. Grep buffers
can be saved and automatically revisited.
-*** The new variables `grep-window-height' and `grep-scroll-output' override
-the corresponding compilation mode settings, for grep commands only.
-
*** New option `grep-highlight-matches' highlights matches in *grep*
buffer. It uses a special feature of some grep programs which accept
--color option to output markers around matches. When going to the next
unchanged to the system to execute, which allows more complicated
command lines to be used than was possible before.
-** X Windows Support:
+*** The new variables `grep-window-height' and `grep-scroll-output' override
+the corresponding compilation mode settings, for grep commands only.
-*** Emacs now supports drag and drop for X. Dropping a file on a window
- opens it, dropping text inserts the text. Dropping a file on a dired
- buffer copies or moves the file to that directory.
+** Cursor display changes:
-*** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
-The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
-and `x-super-keysym' can be used to choose which keysyms Emacs should
-use for the modifiers. For example, the following two lines swap
-Meta and Alt:
+*** Emacs can produce an underscore-like (horizontal bar) cursor.
+The underscore cursor is set by putting `(cursor-type . hbar)' in
+default-frame-alist. It supports variable heights, like the `bar'
+cursor does.
+
+*** The variable `cursor-in-non-selected-windows' can now be set to any
+of the recognized cursor types.
+
+*** Display of hollow cursors now obeys the buffer-local value (if any)
+of `cursor-in-non-selected-windows' in the buffer that the cursor
+appears in.
+
+*** On text terminals, the variable `visible-cursor' controls whether Emacs
+uses the "very visible" cursor (the default) or the normal cursor.
+
+*** The X resource cursorBlink can be used to turn off cursor blinking.
+
+*** On X, MS Windows, and Mac OS, the blinking cursor's "off" state is
+now controlled by the variable `blink-cursor-alist'.
+
+** X Windows Support:
+
+*** Emacs now supports drag and drop for X. Dropping a file on a window
+opens it, dropping text inserts the text. Dropping a file on a dired
+buffer copies or moves the file to that directory.
+
+*** Under X11, it is possible to swap Alt and Meta (and Super and Hyper).
+The new variables `x-alt-keysym', `x-hyper-keysym', `x-meta-keysym',
+and `x-super-keysym' can be used to choose which keysyms Emacs should
+use for the modifiers. For example, the following two lines swap
+Meta and Alt:
(setq x-alt-keysym 'meta)
(setq x-meta-keysym 'alt)
\f
* New Modes and Packages in Emacs 22.1
-** ERC is now part of the Emacs distribution.
-
-ERC is a powerful, modular, and extensible IRC client for Emacs.
-
-To see what modules are available, type
-M-x customize-option erc-modules RET.
-
-To start an IRC session with ERC, type M-x erc, and follow the prompts
-for server, port, and nick.
-
-** Rcirc is now part of the Emacs distribution.
-
-Rcirc is an Internet relay chat (IRC) client. It supports
-simultaneous connections to multiple IRC servers. Each discussion
-takes place in its own buffer. For each connection you can join
-several channels (many-to-many) and participate in private
-(one-to-one) chats. Both channel and private chats are contained in
-separate buffers.
-
-To start an IRC session using the default parameters, type M-x irc.
-If you type C-u M-x irc, it prompts you for the server, nick, port and
-startup channel parameters before connecting.
-
-** Newsticker is now part of the Emacs distribution.
-
-Newsticker asynchronously retrieves headlines (RSS) from a list of news
-sites, prepares these headlines for reading, and allows for loading the
-corresponding articles in a web browser. Its documentation is in a
-separate manual.
-
-** savehist saves minibuffer histories between sessions.
-To use this feature, turn on savehist-mode in your `.emacs' file.
-
-** Filesets are collections of files. You can define a fileset in
-various ways, such as based on a directory tree or based on
-program files that include other program files.
-
-Once you have defined a fileset, you can perform various operations on
-all the files in it, such as visiting them or searching and replacing
-in them.
-
-** Calc is now part of the Emacs distribution.
-
-Calc is an advanced desk calculator and mathematical tool written in
-Emacs Lisp. The prefix for Calc has been changed to `C-x *' and Calc
-can be started with `C-x * *'. The Calc manual is separate from the
-Emacs manual; within Emacs, type "C-h i m calc RET" to read the
-manual. A reference card is available in `etc/calccard.tex' and
-`etc/calccard.ps'.
-
-** The new package ibuffer provides a powerful, completely
-customizable replacement for buff-menu.el.
-
-** Ido mode is now part of the Emacs distribution.
-
-The ido (interactively do) package is an extension of the iswitchb
-package to do interactive opening of files and directories in addition
-to interactive buffer switching. Ido is a superset of iswitchb (with
-a few exceptions), so don't enable both packages.
-
-** Image files are normally visited in Image mode, which lets you toggle
-between viewing the image and viewing the text using C-c C-c.
-
** CUA mode is now part of the Emacs distribution.
The new cua package provides CUA-like keybindings using C-x for
must remove older versions of cua.el or cua-mode.el as well as the
loading and customization of those packages from the .emacs file.
+** Tramp is now part of the distribution.
+
+This package is similar to Ange-FTP: it allows you to edit remote
+files. But whereas Ange-FTP uses FTP to access the remote host,
+Tramp uses a shell connection. The shell connection is always used
+for filename completion and directory listings and suchlike, but for
+the actual file transfer, you can choose between the so-called
+`inline' methods (which transfer the files through the shell
+connection using base64 or uu encoding) and the `out-of-band' methods
+(which invoke an external copying program such as `rcp' or `scp' or
+`rsync' to do the copying).
+
+Shell connections can be acquired via `rsh', `ssh', `telnet' and also
+`su' and `sudo'. Ange-FTP is still supported via the `ftp' method.
+
+If you want to disable Tramp you should set
+
+ (setq tramp-default-method "ftp")
+
+Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x
+tramp-unload-tramp.
+
+** The image-dired.el package allows you to easily view, tag and in
+other ways manipulate image files and their thumbnails, using dired as
+the main interface. Image-Dired provides functionality to generate
+simple image galleries.
+
+** Image files are normally visited in Image mode, which lets you toggle
+between viewing the image and viewing the text using C-c C-c.
+
+** The new python.el package is used to edit Python and Jython programs.
+
+** The URL package (which had been part of W3) is now part of Emacs.
+
+** Calc is now part of the Emacs distribution.
+
+Calc is an advanced desk calculator and mathematical tool written in
+Emacs Lisp. The prefix for Calc has been changed to `C-x *' and Calc
+can be started with `C-x * *'. The Calc manual is separate from the
+Emacs manual; within Emacs, type "C-h i m calc RET" to read the
+manual. A reference card is available in `etc/calccard.tex' and
+`etc/calccard.ps'.
+
** Org mode is now part of the Emacs distribution
Org mode is a mode for keeping notes, maintaining ToDo lists, and
type "C-h i m org RET" to read that manual. A reference card is
available in `etc/orgcard.tex' and `etc/orgcard.ps'.
-** The new package dns-mode.el adds syntax highlighting of DNS master files.
-It is a modern replacement for zone-mode.el, which is now obsolete.
+** ERC is now part of the Emacs distribution.
+
+ERC is a powerful, modular, and extensible IRC client for Emacs.
+
+To see what modules are available, type
+M-x customize-option erc-modules RET.
+
+To start an IRC session with ERC, type M-x erc, and follow the prompts
+for server, port, and nick.
+
+** Rcirc is now part of the Emacs distribution.
+
+Rcirc is an Internet relay chat (IRC) client. It supports
+simultaneous connections to multiple IRC servers. Each discussion
+takes place in its own buffer. For each connection you can join
+several channels (many-to-many) and participate in private
+(one-to-one) chats. Both channel and private chats are contained in
+separate buffers.
+
+To start an IRC session using the default parameters, type M-x irc.
+If you type C-u M-x irc, it prompts you for the server, nick, port and
+startup channel parameters before connecting.
+
+** The new package ibuffer provides a powerful, completely
+customizable replacement for buff-menu.el.
+
+** Newsticker is now part of the Emacs distribution.
+
+Newsticker asynchronously retrieves headlines (RSS) from a list of news
+sites, prepares these headlines for reading, and allows for loading the
+corresponding articles in a web browser. Its documentation is in a
+separate manual.
+
+** The wdired.el package allows you to use normal editing commands on Dired
+buffers to change filenames, permissions, etc...
+
+** Ido mode is now part of the Emacs distribution.
+
+The ido (interactively do) package is an extension of the iswitchb
+package to do interactive opening of files and directories in addition
+to interactive buffer switching. Ido is a superset of iswitchb (with
+a few exceptions), so don't enable both packages.
** The new global minor mode `file-name-shadow-mode' modifies the way
filenames being entered by the user in the minibuffer are displayed, so
invisible, or otherwise less visually noticeable. The display method can
be displayed by customizing the variable `file-name-shadow-properties'.
-** The new package flymake.el does on-the-fly syntax checking of program
-source files. See the Flymake's Info manual for more details.
-
-** The new keypad setup package provides several common bindings for
-the numeric keypad which is available on most keyboards. The numeric
-keypad typically has the digits 0 to 9, a decimal point, keys marked
-+, -, /, and *, an Enter key, and a NumLock toggle key. The keypad
-package only controls the use of the digit and decimal keys.
-
-By customizing the variables `keypad-setup', `keypad-shifted-setup',
-`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by
-using the function `keypad-setup', you can rebind all digit keys and
-the decimal key of the keypad in one step for each of the four
-possible combinations of the Shift key state (not pressed/pressed) and
-the NumLock toggle state (off/on).
-
-The choices for the keypad keys in each of the above states are:
-`Plain numeric keypad' where the keys generates plain digits,
-`Numeric keypad with decimal key' where the character produced by the
-decimal key can be customized individually (for internationalization),
-`Numeric Prefix Arg' where the keypad keys produce numeric prefix args
-for Emacs editing commands, `Cursor keys' and `Shifted Cursor keys'
-where the keys work like (shifted) arrow keys, home/end, etc., and
-`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.)
-are left unspecified and can be bound individually through the global
-or local keymaps.
-
** Emacs' keyboard macro facilities have been enhanced by the new
kmacro package.
C-x C-k SPC steps through the last keyboard macro one key sequence
at a time, prompting for the actions to take.
-** New minor mode, Visible mode, toggles invisibility in the current buffer.
-When enabled, it makes all invisible text visible. When disabled, it
-restores the previous value of `buffer-invisibility-spec'.
+** The new keypad setup package provides several common bindings for
+the numeric keypad which is available on most keyboards. The numeric
+keypad typically has the digits 0 to 9, a decimal point, keys marked
++, -, /, and *, an Enter key, and a NumLock toggle key. The keypad
+package only controls the use of the digit and decimal keys.
-** The wdired.el package allows you to use normal editing commands on Dired
-buffers to change filenames, permissions, etc...
+By customizing the variables `keypad-setup', `keypad-shifted-setup',
+`keypad-numlock-setup', and `keypad-numlock-shifted-setup', or by
+using the function `keypad-setup', you can rebind all digit keys and
+the decimal key of the keypad in one step for each of the four
+possible combinations of the Shift key state (not pressed/pressed) and
+the NumLock toggle state (off/on).
-** The new package longlines.el provides a minor mode for editing text
-files composed of long lines, based on the `use-hard-newlines'
-mechanism. The long lines are broken up by inserting soft newlines,
-which are automatically removed when saving the file to disk or
-copying into the kill ring, clipboard, etc. By default, Longlines
-mode inserts soft newlines automatically during editing, a behavior
-referred to as "soft word wrap" in other text editors. This is
-similar to Refill mode, but more reliable. To turn the word wrap
-feature off, set `longlines-auto-wrap' to nil.
+The choices for the keypad keys in each of the above states are:
+`Plain numeric keypad' where the keys generates plain digits,
+`Numeric keypad with decimal key' where the character produced by the
+decimal key can be customized individually (for internationalization),
+`Numeric Prefix Arg' where the keypad keys produce numeric prefix args
+for Emacs editing commands, `Cursor keys' and `Shifted Cursor keys'
+where the keys work like (shifted) arrow keys, home/end, etc., and
+`Unspecified/User-defined' where the keypad keys (kp-0, kp-1, etc.)
+are left unspecified and can be bound individually through the global
+or local keymaps.
** The printing package is now part of the Emacs distribution.
printer) or send directly to printer a PostScript code generated by
`ps-print' package. Use M-x pr-help for more information.
-** The minor mode Reveal mode makes text visible on the fly as you
-move your cursor into hidden regions of the buffer.
-It should work with any package that uses overlays to hide parts
-of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
-
-There is also Global Reveal mode which affects all buffers.
-
-** The ruler-mode.el library provides a minor mode for displaying an
-"active" ruler in the header line. You can use the mouse to visually
-change the `fill-column', `window-margins' and `tab-stop-list'
-settings.
+** The new package longlines.el provides a minor mode for editing text
+files composed of long lines, based on the `use-hard-newlines'
+mechanism. The long lines are broken up by inserting soft newlines,
+which are automatically removed when saving the file to disk or
+copying into the kill ring, clipboard, etc. By default, Longlines
+mode inserts soft newlines automatically during editing, a behavior
+referred to as "soft word wrap" in other text editors. This is
+similar to Refill mode, but more reliable. To turn the word wrap
+feature off, set `longlines-auto-wrap' to nil.
** SES mode (ses-mode) is a new major mode for creating and editing
spreadsheet files. Besides the usual Emacs features (intuitive command
letters, undo, cell formulas in Lisp, plaintext files, etc.) it also offers
viral immunity and import/export of tab-separated values.
-** The new global minor mode `size-indication-mode' (off by default)
-shows the size of accessible part of the buffer on the mode line.
-
** The new package table.el implements editable, WYSIWYG, embedded
`text tables' in Emacs buffers. It simulates the effect of putting
these tables in a special major mode. The package emulates WYSIWYG
can generate a table source in typesetting and markup languages such
as latex and html from the visually laid out text table.
-** The image-dired.el package allows you to easily view, tag and in
-other ways manipulate image files and their thumbnails, using dired as
-the main interface. Image-Dired provides functionality to generate
-simple image galleries.
+** Filesets are collections of files. You can define a fileset in
+various ways, such as based on a directory tree or based on
+program files that include other program files.
-** Tramp is now part of the distribution.
+Once you have defined a fileset, you can perform various operations on
+all the files in it, such as visiting them or searching and replacing
+in them.
-This package is similar to Ange-FTP: it allows you to edit remote
-files. But whereas Ange-FTP uses FTP to access the remote host,
-Tramp uses a shell connection. The shell connection is always used
-for filename completion and directory listings and suchlike, but for
-the actual file transfer, you can choose between the so-called
-`inline' methods (which transfer the files through the shell
-connection using base64 or uu encoding) and the `out-of-band' methods
-(which invoke an external copying program such as `rcp' or `scp' or
-`rsync' to do the copying).
+** The minor mode Reveal mode makes text visible on the fly as you
+move your cursor into hidden regions of the buffer.
+It should work with any package that uses overlays to hide parts
+of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
-Shell connections can be acquired via `rsh', `ssh', `telnet' and also
-`su' and `sudo'. Ange-FTP is still supported via the `ftp' method.
+There is also Global Reveal mode which affects all buffers.
-If you want to disable Tramp you should set
+** New minor mode, Visible mode, toggles invisibility in the current buffer.
+When enabled, it makes all invisible text visible. When disabled, it
+restores the previous value of `buffer-invisibility-spec'.
- (setq tramp-default-method "ftp")
+** The new package flymake.el does on-the-fly syntax checking of program
+source files. See the Flymake's Info manual for more details.
-Removing Tramp, and re-enabling Ange-FTP, can be achieved by M-x
-tramp-unload-tramp.
+** savehist saves minibuffer histories between sessions.
+To use this feature, turn on savehist-mode in your `.emacs' file.
-** The URL package (which had been part of W3) is now part of Emacs.
+** The ruler-mode.el library provides a minor mode for displaying an
+"active" ruler in the header line. You can use the mouse to visually
+change the `fill-column', `window-margins' and `tab-stop-list'
+settings.
-** `cfengine-mode' is a major mode for editing GNU Cfengine
-configuration files.
+** The file t-mouse.el is now part of Emacs and provides access to mouse
+events from the console. It still requires gpm to work but has been updated
+for Emacs 22. In particular, the mode-line is now position sensitive.
+
+** The new package scroll-lock.el provides the Scroll Lock minor mode
+for pager-like scrolling. Keys which normally move point by line or
+paragraph will scroll the buffer by the respective amount of lines
+instead and point will be kept vertically fixed relative to window
+boundaries during scrolling.
+
+** The new global minor mode `size-indication-mode' (off by default)
+shows the size of accessible part of the buffer on the mode line.
** The new package conf-mode.el handles thousands of configuration files, with
varying syntaxes for comments (;, #, //, /* */ or !), assignment (var = value,
** GDB-Script-mode is used for files like .gdbinit.
-** The TCL package tcl-mode.el was replaced by tcl.el.
-This was actually done in Emacs-21.1, and was not documented.
+** The new package dns-mode.el adds syntax highlighting of DNS master files.
+It is a modern replacement for zone-mode.el, which is now obsolete.
-** The new package scroll-lock.el provides the Scroll Lock minor mode
-for pager-like scrolling. Keys which normally move point by line or
-paragraph will scroll the buffer by the respective amount of lines
-instead and point will be kept vertically fixed relative to window
-boundaries during scrolling.
+** `cfengine-mode' is a major mode for editing GNU Cfengine
+configuration files.
-** The file t-mouse.el is now part of Emacs and provides access to mouse
-events from the console. It still requires gpm to work but has been updated
-for Emacs 22. In particular, the mode-line is now position sensitive.
+** The TCL package tcl-mode.el was replaced by tcl.el.
+This was actually done in Emacs-21.1, and was not documented.
\f
* Changes in Specialized Modes and Packages in Emacs 22.1:
-** Changes in Shell Mode
-
-*** Shell output normally scrolls so that the input line is at the
-bottom of the window -- thus showing the maximum possible text. (This
-is similar to the way sequential output to a terminal works.)
-
** Changes in Dired
-*** Bindings for Image-Dired added
+*** Bindings for Image-Dired added.
Several new keybindings, all starting with the C-t prefix, have been
added to Dired. They are all bound to commands in Image-Dired. As a
starting point, mark some image files in a dired buffer and do C-t d
to display thumbnails of them in a separate buffer.
+** Info mode changes
+
+*** Images in Info pages are supported.
+
+Info pages show embedded images, in Emacs frames with image support.
+Info documentation that includes images, processed with makeinfo
+version 4.7 or newer, compiles to Info pages with embedded images.
+
+*** `Info-index' offers completion.
+
+*** http and ftp links in Info are now operational: they look like cross
+references and following them calls `browse-url'.
+
+*** isearch in Info uses Info-search and searches through multiple nodes.
+
+Before leaving the initial Info node isearch fails once with the error
+message [initial node], and with subsequent C-s/C-r continues through
+other nodes. When isearch fails for the rest of the manual, it wraps
+around the whole manual to the top/final node. The user option
+`Info-isearch-search' controls whether to use Info-search for isearch,
+or the default isearch search function that wraps around the current
+Info node.
+
+*** New search commands: `Info-search-case-sensitively' (bound to S),
+`Info-search-backward', and `Info-search-next' which repeats the last
+search without prompting for a new search string.
+
+*** New command `info-apropos' searches the indices of the known
+Info files on your system for a string, and builds a menu of the
+possible matches.
+
+*** New command `Info-history-forward' (bound to r and new toolbar icon)
+moves forward in history to the node you returned from after using
+`Info-history-back' (renamed from `Info-last').
+
+*** New command `Info-history' (bound to L) displays a menu of visited nodes.
+
+*** New command `Info-toc' (bound to T) creates a node with table of contents
+from the tree structure of menus of the current Info file.
+
+*** New command `Info-copy-current-node-name' (bound to w) copies
+the current Info node name into the kill ring. With a zero prefix
+arg, puts the node name inside the `info' function call.
+
+*** New face `info-xref-visited' distinguishes visited nodes from unvisited
+and a new option `Info-fontify-visited-nodes' to control this.
+
+*** A numeric prefix argument of `info' selects an Info buffer
+with the number appended to the `*info*' buffer name (e.g. "*info*<2>").
+
+*** Info now hides node names in menus and cross references by default.
+
+If you prefer the old behavior, you can set the new user option
+`Info-hide-note-references' to nil.
+
+*** The default value for `Info-scroll-prefer-subnodes' is now nil.
+
+** Emacs server changes
+
+*** You can have several Emacs servers on the same machine.
+
+ % emacs --eval '(setq server-name "foo")' -f server-start &
+ % emacs --eval '(setq server-name "bar")' -f server-start &
+ % emacsclient -s foo file1
+ % emacsclient -s bar file2
+
+*** The `emacsclient' command understands the options `--eval' and
+`--display' which tell Emacs respectively to evaluate the given Lisp
+expression and to use the given display when visiting files.
+
+*** User option `server-mode' can be used to start a server process.
+
+** Locate changes
+
+*** By default, reverting the *Locate* buffer now just runs the last
+`locate' command back over again without offering to update the locate
+database (which normally only works if you have root privileges). If
+you prefer the old behavior, set the new customizable option
+`locate-update-when-revert' to t.
+
+** Desktop package
+
+*** Desktop saving is now a minor mode, `desktop-save-mode'.
+
+*** The variable `desktop-enable' is obsolete.
+
+Customize `desktop-save-mode' to enable desktop saving.
+
+*** Buffers are saved in the desktop file in the same order as that in the
+buffer list.
+
+*** The desktop package can be customized to restore only some buffers
+immediately, remaining buffers are restored lazily (when Emacs is
+idle).
+
+*** New command line option --no-desktop
+
+*** New commands:
+ - desktop-revert reverts to the last loaded desktop.
+ - desktop-change-dir kills current desktop and loads a new.
+ - desktop-save-in-desktop-dir saves desktop in the directory from which
+ it was loaded.
+ - desktop-lazy-complete runs the desktop load to completion.
+ - desktop-lazy-abort aborts lazy loading of the desktop.
+
+*** New customizable variables:
+ - desktop-save. Determines whether the desktop should be saved when it is
+ killed.
+ - desktop-file-name-format. Format in which desktop file names should be saved.
+ - desktop-path. List of directories in which to lookup the desktop file.
+ - desktop-locals-to-save. List of local variables to save.
+ - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear.
+ - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear'
+ should not delete.
+ - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are
+ restored lazily (when Emacs is idle).
+ - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
+ - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
+
+*** New hooks:
+ - desktop-after-read-hook run after a desktop is loaded.
+ - desktop-no-desktop-file-hook run when no desktop file is found.
+
+** Recentf changes
+
+The recent file list is now automatically cleaned up when recentf mode is
+enabled. The new option `recentf-auto-cleanup' controls when to do
+automatic cleanup.
+
+The ten most recent files can be quickly opened by using the shortcut
+keys 1 to 9, and 0, when the recent list is displayed in a buffer via
+the `recentf-open-files', or `recentf-open-more-files' commands.
+
+The `recentf-keep' option replaces `recentf-keep-non-readable-files-p'
+and provides a more general mechanism to customize which file names to
+keep in the recent list.
+
+With the more advanced option `recentf-filename-handlers', you can
+specify functions that successively transform recent file names. For
+example, if set to `file-truename' plus `abbreviate-file-name', the
+same file will not be in the recent list with different symbolic
+links, and the file name will be abbreviated.
+
+To follow naming convention, `recentf-menu-append-commands-flag'
+replaces the misnamed option `recentf-menu-append-commands-p'. The
+old name remains available as alias, but has been marked obsolete.
+
+** Auto-Revert changes
+
+*** You can now use Auto Revert mode to `tail' a file.
+
+If point is at the end of a file buffer before reverting, Auto Revert
+mode keeps it at the end after reverting. Similarly if point is
+displayed at the end of a file buffer in any window, it stays at the
+end of the buffer in that window. This allows you to "tail" a file:
+just put point at the end of the buffer and it stays there. This rule
+applies to file buffers. For non-file buffers, the behavior can be
+mode dependent.
+
+If you are sure that the file will only change by growing at the end,
+then you can tail the file more efficiently by using the new minor
+mode Auto Revert Tail mode. The function `auto-revert-tail-mode'
+toggles this mode.
+
+*** Auto Revert mode is now more careful to avoid excessive reverts and
+other potential problems when deciding which non-file buffers to
+revert. This matters especially if Global Auto Revert mode is enabled
+and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert
+mode only reverts a non-file buffer if the buffer has a non-nil
+`revert-buffer-function' and a non-nil `buffer-stale-function', which
+decides whether the buffer should be reverted. Currently, this means
+that auto reverting works for Dired buffers (although this may not
+work properly on all operating systems) and for the Buffer Menu.
+
+*** If the new user option `auto-revert-check-vc-info' is non-nil, Auto
+Revert mode reliably updates version control info (such as the version
+control number in the mode line), in all version controlled buffers in
+which it is active. If the option is nil, the default, then this info
+only gets updated whenever the buffer gets reverted.
+
+** Changes in Shell Mode
+
+*** Shell output normally scrolls so that the input line is at the
+bottom of the window -- thus showing the maximum possible text. (This
+is similar to the way sequential output to a terminal works.)
+
** Changes in Hi Lock
*** hi-lock-mode now only affects a single buffer, and a new function
** Changes in Allout
+*** Topic cryptography added, enabling easy gpg topic encryption and
+decryption. Per-topic basis enables interspersing encrypted-text and
+clear-text within a single file to your heart's content, using symmetric
+and/or public key modes. Time-limited key caching, user-provided
+symmetric key hinting and consistency verification, auto-encryption of
+pending topics on save, and more, make it easy to use encryption in
+powerful ways. Encryption behavior customization is collected in the
+allout-encryption customization group.
+
+*** Default command prefix was changed to "\C-c " (control-c space), to
+avoid intruding on user's keybinding space. Customize the
+`allout-command-prefix' variable to your preference.
+
*** Some previously rough topic-header format edge cases are reconciled.
Level 1 topics use the mode's comment format, and lines starting with the
asterisk - for instance, the comment close of some languages (eg, c's "*/"
discontinuities, revealing excessively contained topics rather than either
leaving them hidden or raising an error.
-*** Topic cryptography added, enabling easy gpg topic encryption and
-decryption. Per-topic basis enables interspersing encrypted-text and
-clear-text within a single file to your heart's content, using symmetric
-and/or public key modes. Time-limited key caching, user-provided
-symmetric key hinting and consistency verification, auto-encryption of
-pending topics on save, and more, make it easy to use encryption in
-powerful ways. Encryption behavior customization is collected in the
-allout-encryption customization group.
-
*** Navigation within an item is easier. Repeated beginning-of-line and
end-of-line key commands (usually, ^A and ^E) cycle through the
beginning/end-of-line and then beginning/end of topic, etc. See new
activation hook, `allout-mode-hook' are now run after the `allout-mode'
variable is changed, rather than before.
-*** Default command prefix was changed to "\C-c " (control-c space), to
-avoid intruding on user's keybinding space. Customize the
-`allout-command-prefix' variable to your preference.
-
*** Allout now uses text overlay's `invisible' property for concealed text,
instead of selective-display. This simplifies the code, in particular
avoiding the need for kludges for isearch dynamic-display, discretionary
- many, many other, more minor tweaks, fixes, and refinements.
- version number incremented to 2.2
-** The variable `woman-topic-at-point' is renamed
-to `woman-use-topic-at-point' and behaves differently: if this
-variable is non-nil, the `woman' command uses the word at point
-automatically, without asking for a confirmation. Otherwise, the word
-at point is suggested as default, but not inserted at the prompt.
+** Hideshow mode changes
-** Changes to cmuscheme
+*** New variable `hs-set-up-overlay' allows customization of the overlay
+used to effect hiding for hideshow minor mode. Integration with isearch
+handles the overlay property `display' specially, preserving it during
+temporary overlay showing in the course of an isearch operation.
-*** Emacs now offers to start Scheme if the user tries to
-evaluate a Scheme expression but no Scheme subprocess is running.
+*** New variable `hs-allow-nesting' non-nil means that hiding a block does
+not discard the hidden state of any "internal" blocks; when the parent
+block is later shown, the internal blocks remain hidden. Default is nil.
-*** If the file ~/.emacs_NAME or ~/.emacs.d/init_NAME.scm (where NAME
-is the name of the Scheme interpreter) exists, its contents are sent
-to the Scheme subprocess upon startup.
+** FFAP changes
-*** There are new commands to instruct the Scheme interpreter to trace
-procedure calls (`scheme-trace-procedure') and to expand syntactic forms
-(`scheme-expand-current-form'). The commands actually sent to the Scheme
-subprocess are controlled by the user options `scheme-trace-command',
-`scheme-untrace-command' and `scheme-expand-current-form'.
+*** New ffap commands and keybindings:
-** Changes in Makefile mode
+C-x C-r (`ffap-read-only'),
+C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
+C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
+C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
-*** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake.
+*** FFAP accepts wildcards in a file name by default.
-The former two couldn't be differentiated before, and the latter three
-are new. Font-locking is robust now and offers new customizable
-faces.
+C-x C-f passes the file name to `find-file' with non-nil WILDCARDS
+argument, which visits multiple files, and C-x d passes it to `dired'.
-*** The variable `makefile-query-one-target-method' has been renamed
-to `makefile-query-one-target-method-function'. The old name is still
-available as alias.
+** Changes in Skeleton
-** In Outline mode, `hide-body' no longer hides lines at the top
-of the file that precede the first header line.
+*** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction.
-** Telnet now prompts you for a port number with C-u M-x telnet.
+`@' has reverted to only setting `skeleton-positions' and no longer
+sets `skeleton-point'. Skeletons which used @ to mark
+`skeleton-point' independent of `_' should now use `-' instead. The
+updated `skeleton-insert' docstring explains these new features along
+with other details of skeleton construction.
-** The terminal emulation code in term.el has been improved; it can
-run most curses applications now.
+*** The variables `skeleton-transformation', `skeleton-filter', and
+`skeleton-pair-filter' have been renamed to
+`skeleton-transformation-function', `skeleton-filter-function', and
+`skeleton-pair-filter-function'. The old names are still available
+as aliases.
+
+** HTML/SGML changes
-** M-x diff uses Diff mode instead of Compilation mode.
+*** Emacs now tries to set up buffer coding systems for HTML/XML files
+automatically.
+
+*** SGML mode has indentation and supports XML syntax.
+The new variable `sgml-xml-mode' tells SGML mode to use XML syntax.
+When this option is enabled, SGML tags are inserted in XML style,
+i.e., there is always a closing tag.
+By default, its setting is inferred on a buffer-by-buffer basis
+from the file name or buffer contents.
+
+*** The variable `sgml-transformation' has been renamed to
+`sgml-transformation-function'. The old name is still available as
+alias.
+
+*** `xml-mode' is now an alias for `sgml-mode', which has XML support.
+
+** TeX modes
+
+*** New major mode Doctex mode, for *.dtx files.
+
+*** C-c C-c prompts for a command to run, and tries to offer a good default.
+
+*** The user option `tex-start-options-string' has been replaced
+by two new user options: `tex-start-options', which should hold
+command-line options to feed to TeX, and `tex-start-commands' which should hold
+TeX commands to use at startup.
+
+*** verbatim environments are now highlighted in courier by font-lock
+and super/sub-scripts are made into super/sub-scripts.
+
+** RefTeX mode changes
+
+*** Changes to RefTeX's table of contents
+
+The new command keys "<" and ">" in the TOC buffer promote/demote the
+section at point or all sections in the current region, with full
+support for multifile documents.
+
+The new command `reftex-toc-recenter' (`C-c -') shows the current
+section in the TOC buffer without selecting the TOC window.
+Recentering can happen automatically in idle time when the option
+`reftex-auto-recenter-toc' is turned on. The highlight in the TOC
+buffer stays when the focus moves to a different window. A dedicated
+frame can show the TOC with the current section always automatically
+highlighted. The frame is created and deleted from the toc buffer
+with the `d' key.
+
+The toc window can be split off horizontally instead of vertically.
+See new option `reftex-toc-split-windows-horizontally'.
+
+Labels can be renamed globally from the table of contents using the
+key `M-%'.
+
+The new command `reftex-goto-label' jumps directly to a label
+location.
-** Diff mode key bindings changed.
+*** Changes related to citations and BibTeX database files
+
+Commands that insert a citation now prompt for optional arguments when
+called with a prefix argument. Related new options are
+`reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'.
+
+The new command `reftex-create-bibtex-file' creates a BibTeX database
+with all entries referenced in the current document. The keys "e" and
+"E" allow to produce a BibTeX database file from entries marked in a
+citation selection buffer.
+
+The command `reftex-citation' uses the word in the buffer before the
+cursor as a default search string.
+
+The support for chapterbib has been improved. Different chapters can
+now use BibTeX or an explicit `thebibliography' environment.
+
+The macros which specify the bibliography file (like \bibliography)
+can be configured with the new option `reftex-bibliography-commands'.
+
+Support for jurabib has been added.
+
+*** Global index matched may be verified with a user function.
+
+During global indexing, a user function can verify an index match.
+See new option `reftex-index-verify-function'.
+
+*** Parsing documents with many labels can be sped up.
+
+Operating in a document with thousands of labels can be sped up
+considerably by allowing RefTeX to derive the type of a label directly
+from the label prefix like `eq:' or `fig:'. The option
+`reftex-trust-label-prefix' needs to be configured in order to enable
+this feature. While the speed-up is significant, this may reduce the
+quality of the context offered by RefTeX to describe a label.
+
+*** Miscellaneous changes
+
+The macros which input a file in LaTeX (like \input, \include) can be
+configured in the new option `reftex-include-file-commands'.
+
+RefTeX supports global incremental search.
+
+** BibTeX mode
+
+*** The new command `bibtex-url' browses a URL for the BibTeX entry at
+point (bound to C-c C-l and mouse-2, RET on clickable fields).
+
+*** The new command `bibtex-entry-update' (bound to C-c C-u) updates
+an existing BibTeX entry by inserting fields that may occur but are not
+present.
+
+*** New `bibtex-entry-format' option `required-fields', enabled by default.
+
+*** `bibtex-maintain-sorted-entries' can take values `plain',
+`crossref', and `entry-class' which control the sorting scheme used
+for BibTeX entries. `bibtex-sort-entry-class' controls the sorting
+scheme `entry-class'. TAB completion for reference keys and
+automatic detection of duplicates does not require anymore that
+`bibtex-maintain-sorted-entries' is non-nil.
-These are the new bindings:
+*** The new command `bibtex-complete' completes word fragment before
+point according to context (bound to M-tab).
-C-c C-e diff-ediff-patch (old M-A)
-C-c C-n diff-restrict-view (old M-r)
-C-c C-r diff-reverse-direction (old M-R)
-C-c C-u diff-context->unified (old M-U)
-C-c C-w diff-refine-hunk (old C-c C-r)
+*** In BibTeX mode the command `fill-paragraph' (M-q) fills
+individual fields of a BibTeX entry.
-To convert unified to context format, use C-u C-c C-u.
-In addition, C-c C-u now operates on the region
-in Transient Mark mode when the mark is active.
+*** The new variable `bibtex-autofill-types' contains a list of entry
+types for which fields are filled automatically (if possible).
-** You can now customize `fill-nobreak-predicate' to control where
-filling can break lines. The value is now normally a list of
-functions, but it can also be a single function, for compatibility.
+*** The new commands `bibtex-find-entry' and `bibtex-find-crossref'
+locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
+Crossref fields are clickable (bound to mouse-2, RET).
-Emacs provide two predicates, `fill-single-word-nobreak-p' and
-`fill-french-nobreak-p', for use as the value of
-`fill-nobreak-predicate'.
+*** The new variables `bibtex-files' and `bibtex-file-path' define a set
+of BibTeX files that are searched for entry keys.
-** M-x view-file and commands that use it now avoid interfering
-with special modes such as Tar mode.
+*** The new command `bibtex-validate-globally' checks for duplicate keys
+in multiple BibTeX files.
-** Commands `winner-redo' and `winner-undo', from winner.el, are now
-bound to C-c <left> and C-c <right>, respectively. This is an
-incompatible change.
+*** If the new variable `bibtex-autoadd-commas' is non-nil,
+automatically add missing commas at end of BibTeX fields.
-** `global-whitespace-mode' is a new alias for `whitespace-global-mode'.
+*** The new command `bibtex-copy-summary-as-kill' pushes summary
+of BibTeX entry to kill ring (bound to C-c C-t).
-** M-x compare-windows now can automatically skip non-matching text to
-resync points in both windows.
+*** If the new variable `bibtex-parse-keys-fast' is non-nil,
+use fast but simplified algorithm for parsing BibTeX keys.
-** New user option `add-log-always-start-new-record'.
+*** The new variables bibtex-expand-strings and
+bibtex-autokey-expand-strings control the expansion of strings when
+extracting the content of a BibTeX field.
-When this option is enabled, M-x add-change-log-entry always
-starts a new record regardless of when the last record is.
+*** The variables `bibtex-autokey-name-case-convert' and
+`bibtex-autokey-titleword-case-convert' have been renamed to
+`bibtex-autokey-name-case-convert-function' and
+`bibtex-autokey-titleword-case-convert-function'. The old names are
+still available as aliases.
-** PO translation files are decoded according to their MIME headers
-when Emacs visits them.
+** GUD changes
-** Info mode changes:
+*** The new package gdb-ui.el provides an enhanced graphical interface to
+GDB. You can interact with GDB through the GUD buffer in the usual way, but
+there are also further buffers which control the execution and describe the
+state of your program. It can separate the input/output of your program from
+that of GDB and watches expressions in the speedbar. It also uses features of
+Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate
+breakpoints.
-*** A numeric prefix argument of `info' selects an Info buffer
-with the number appended to the `*info*' buffer name (e.g. "*info*<2>").
+To use this package just type M-x gdb. See the Emacs manual if you want the
+old behaviour.
-*** isearch in Info uses Info-search and searches through multiple nodes.
+*** GUD mode has its own tool bar for controlling execution of the inferior
+and other common debugger commands.
-Before leaving the initial Info node isearch fails once with the error
-message [initial node], and with subsequent C-s/C-r continues through
-other nodes. When isearch fails for the rest of the manual, it wraps
-around the whole manual to the top/final node. The user option
-`Info-isearch-search' controls whether to use Info-search for isearch,
-or the default isearch search function that wraps around the current
-Info node.
+*** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program
+counter to the specified source line (the one where point is).
-*** New search commands: `Info-search-case-sensitively' (bound to S),
-`Info-search-backward', and `Info-search-next' which repeats the last
-search without prompting for a new search string.
+*** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be
+toggled independently of normal tooltips with the minor mode
+`gud-tooltip-mode'.
-*** New command `Info-history-forward' (bound to r and new toolbar icon)
-moves forward in history to the node you returned from after using
-`Info-history-back' (renamed from `Info-last').
+*** In graphical mode, with a C program, GUD Tooltips have been extended to
+display the #define directive associated with an identifier when program is
+not executing.
-*** New command `Info-history' (bound to L) displays a menu of visited nodes.
+*** GUD mode improvements for jdb:
-*** New command `Info-toc' (bound to T) creates a node with table of contents
-from the tree structure of menus of the current Info file.
+**** Search for source files using jdb classpath and class information.
+Fast startup since there is no need to scan all source files up front.
+There is also no need to create and maintain lists of source
+directories to scan. Look at `gud-jdb-use-classpath' and
+`gud-jdb-classpath' customization variables documentation.
-*** New command `info-apropos' searches the indices of the known
-Info files on your system for a string, and builds a menu of the
-possible matches.
+**** The previous method of searching for source files has been
+preserved in case someone still wants/needs to use it.
+Set `gud-jdb-use-classpath' to nil.
-*** New command `Info-copy-current-node-name' (bound to w) copies
-the current Info node name into the kill ring. With a zero prefix
-arg, puts the node name inside the `info' function call.
+**** Supports the standard breakpoint (gud-break, gud-clear)
+set/clear operations from Java source files under the classpath, stack
+traversal (gud-up, gud-down), and run until current stack finish
+(gud-finish).
-*** New face `info-xref-visited' distinguishes visited nodes from unvisited
-and a new option `Info-fontify-visited-nodes' to control this.
+**** Supports new jdb (Java 1.2 and later) in addition to oldjdb
+(Java 1.1 jdb).
-*** http and ftp links in Info are now operational: they look like cross
-references and following them calls `browse-url'.
+*** Added jdb Customization Variables
-*** Info now hides node names in menus and cross references by default.
+**** `gud-jdb-command-name'. What command line to use to invoke jdb.
-If you prefer the old behavior, you can set the new user option
-`Info-hide-note-references' to nil.
+**** `gud-jdb-use-classpath'. Allows selection of java source file searching
+method: set to t for new method, nil to scan `gud-jdb-directories' for
+java sources (previous method).
-*** Images in Info pages are supported.
+**** `gud-jdb-directories'. List of directories to scan and search for Java
+classes using the original gud-jdb method (if `gud-jdb-use-classpath'
+is nil).
-Info pages show embedded images, in Emacs frames with image support.
-Info documentation that includes images, processed with makeinfo
-version 4.7 or newer, compiles to Info pages with embedded images.
+*** Minor Improvements
-*** The default value for `Info-scroll-prefer-subnodes' is now nil.
+**** The STARTTLS wrapper (starttls.el) can now use GNUTLS
+instead of the OpenSSL based `starttls' tool. For backwards
+compatibility, it prefers `starttls', but you can toggle
+`starttls-use-gnutls' to switch to GNUTLS (or simply remove the
+`starttls' tool).
-*** `Info-index' offers completion.
+**** Do not allow debugger output history variable to grow without bounds.
-** Lisp mode changes:
+** Lisp mode changes
*** Lisp mode now uses `font-lock-doc-face' for doc strings.
function also defines the result format for `eval-expression' (M-:),
`eval-print-last-sexp' (C-j) and some edebug evaluation functions.
-** CC mode changes.
+** Changes to cmuscheme
-*** The CC Mode manual has been extensively revised.
-The information about using CC Mode has been separated from the larger
-and more difficult chapters about configuration.
+*** Emacs now offers to start Scheme if the user tries to
+evaluate a Scheme expression but no Scheme subprocess is running.
-*** Changes in Key Sequences
-**** c-toggle-auto-hungry-state is no longer bound to C-c C-t.
+*** If the file ~/.emacs_NAME or ~/.emacs.d/init_NAME.scm (where NAME
+is the name of the Scheme interpreter) exists, its contents are sent
+to the Scheme subprocess upon startup.
-**** c-toggle-hungry-state is no longer bound to C-c C-d.
-This binding has been taken over by c-hungry-delete-forwards.
+*** There are new commands to instruct the Scheme interpreter to trace
+procedure calls (`scheme-trace-procedure') and to expand syntactic forms
+(`scheme-expand-current-form'). The commands actually sent to the Scheme
+subprocess are controlled by the user options `scheme-trace-command',
+`scheme-untrace-command' and `scheme-expand-current-form'.
-**** c-toggle-auto-state (C-c C-t) has been renamed to c-toggle-auto-newline.
-c-toggle-auto-state remains as an alias.
+** Ewoc changes
-**** The new commands c-hungry-backspace and c-hungry-delete-forwards
-have key bindings C-c C-DEL (or C-c DEL, for the benefit of TTYs) and
-C-c C-d (or C-c C-<delete> or C-c <delete>) respectively. These
-commands delete entire blocks of whitespace with a single
-key-sequence. [N.B. "DEL" is the <backspace> key.]
+*** The new function `ewoc-delete' deletes specified nodes.
-**** The new command c-toggle-electric-mode is bound to C-c C-l.
+*** `ewoc-create' now takes optional arg NOSEP, which inhibits insertion of
+a newline after each pretty-printed entry and after the header and footer.
+This allows you to create multiple-entry ewocs on a single line and to
+effect "invisible" nodes by arranging for the pretty-printer to not print
+anything for those nodes.
-**** The new command c-subword-mode is bound to C-c C-w.
+For example, these two sequences of expressions behave identically:
-*** C-c C-s (`c-show-syntactic-information') now highlights the anchor
-position(s).
+;; NOSEP nil
+(defun PP (data) (insert (format "%S" data)))
+(ewoc-create 'PP "start\n")
+
+;; NOSEP t
+(defun PP (data) (insert (format "%S\n" data)))
+(ewoc-create 'PP "start\n\n" "\n" t)
+
+** CC mode changes
+
+*** The CC Mode manual has been extensively revised.
+The information about using CC Mode has been separated from the larger
+and more difficult chapters about configuration.
*** New Minor Modes
**** Electric Minor Mode toggles the electric action of non-alphabetic keys.
letters in StudlyCapsIdentifiers. You enable this feature by C-c C-w. It can
also be used in non-CC Mode buffers. :-) Contributed by Masatake YAMATO.
-*** New clean-ups
+*** Support for the AWK language.
+Support for the AWK language has been introduced. The implementation is
+based around GNU AWK version 3.1, but it should work pretty well with
+any AWK. As yet, not all features of CC Mode have been adapted for AWK.
+Here is a summary:
-**** `comment-close-slash'.
-With this clean-up, a block (i.e. c-style) comment can be terminated by
-typing a slash at the start of a line.
+**** Indentation Engine
+The CC Mode indentation engine fully supports AWK mode.
-**** `c-one-liner-defun'
-This clean-up compresses a short enough defun (for example, an AWK
-pattern/action pair) onto a single line. "Short enough" is configurable.
+AWK mode handles code formatted in the conventional AWK fashion: `{'s
+which start actions, user-defined functions, or compound statements are
+placed on the same line as the associated construct; the matching `}'s
+are normally placed under the start of the respective pattern, function
+definition, or structured statement.
+
+The predefined line-up functions haven't yet been adapted for AWK
+mode, though some of them may work serendipitously. There shouldn't
+be any problems writing custom indentation functions for AWK mode.
+
+**** Font Locking
+There is a single level of font locking in AWK mode, rather than the
+three distinct levels the other modes have. There are several
+idiosyncrasies in AWK mode's font-locking due to the peculiarities of
+the AWK language itself.
+
+**** Comment and Movement Commands
+These commands all work for AWK buffers. The notion of "defun" has
+been augmented to include AWK pattern-action pairs - the standard
+"defun" commands on key sequences C-M-a, C-M-e, and C-M-h use this
+extended definition.
+
+**** "awk" style, Auto-newline Insertion and Clean-ups
+A new style, "awk" has been introduced, and this is now the default
+style for AWK code. With auto-newline enabled, the clean-up
+c-one-liner-defun (see above) is useful.
*** Font lock support.
CC Mode now provides font lock support for all its languages. This
All the keywords used in CORBA IDL, PSDL, and CIDL are recognized and
handled correctly, also wrt indentation.
-*** Support for the AWK language.
-Support for the AWK language has been introduced. The implementation is
-based around GNU AWK version 3.1, but it should work pretty well with
-any AWK. As yet, not all features of CC Mode have been adapted for AWK.
-Here is a summary:
+*** Changes in Key Sequences
+**** c-toggle-auto-hungry-state is no longer bound to C-c C-t.
-**** Indentation Engine
-The CC Mode indentation engine fully supports AWK mode.
+**** c-toggle-hungry-state is no longer bound to C-c C-d.
+This binding has been taken over by c-hungry-delete-forwards.
-AWK mode handles code formatted in the conventional AWK fashion: `{'s
-which start actions, user-defined functions, or compound statements are
-placed on the same line as the associated construct; the matching `}'s
-are normally placed under the start of the respective pattern, function
-definition, or structured statement.
+**** c-toggle-auto-state (C-c C-t) has been renamed to c-toggle-auto-newline.
+c-toggle-auto-state remains as an alias.
-The predefined line-up functions haven't yet been adapted for AWK
-mode, though some of them may work serendipitously. There shouldn't
-be any problems writing custom indentation functions for AWK mode.
+**** The new commands c-hungry-backspace and c-hungry-delete-forwards
+have key bindings C-c C-DEL (or C-c DEL, for the benefit of TTYs) and
+C-c C-d (or C-c C-<delete> or C-c <delete>) respectively. These
+commands delete entire blocks of whitespace with a single
+key-sequence. [N.B. "DEL" is the <backspace> key.]
-**** Font Locking
-There is a single level of font locking in AWK mode, rather than the
-three distinct levels the other modes have. There are several
-idiosyncrasies in AWK mode's font-locking due to the peculiarities of
-the AWK language itself.
+**** The new command c-toggle-electric-mode is bound to C-c C-l.
-**** Comment and Movement Commands
-These commands all work for AWK buffers. The notion of "defun" has
-been augmented to include AWK pattern-action pairs - the standard
-"defun" commands on key sequences C-M-a, C-M-e, and C-M-h use this
-extended definition.
+**** The new command c-subword-mode is bound to C-c C-w.
-**** "awk" style, Auto-newline Insertion and Clean-ups
-A new style, "awk" has been introduced, and this is now the default
-style for AWK code. With auto-newline enabled, the clean-up
-c-one-liner-defun (see above) is useful.
+*** C-c C-s (`c-show-syntactic-information') now highlights the anchor
+position(s).
*** New syntactic symbols in IDL mode.
The top level constructs "module" and "composition" (from CIDL) are
*** New function `c-context-open-line'.
It's the open-line equivalent of `c-context-line-break'.
+*** New clean-ups
+
+**** `comment-close-slash'.
+With this clean-up, a block (i.e. c-style) comment can be terminated by
+typing a slash at the start of a line.
+
+**** `c-one-liner-defun'
+This clean-up compresses a short enough defun (for example, an AWK
+pattern/action pair) onto a single line. "Short enough" is configurable.
+
*** New lineup functions
**** `c-lineup-string-cont'
**** `c-lineup-argcont'
Lines up continued function arguments after the preceding comma.
+*** Added toggle for syntactic indentation.
+The function `c-toggle-syntactic-indentation' can be used to toggle
+syntactic indentation.
+
*** Better caching of the syntactic context.
CC Mode caches the positions of the opening parentheses (of any kind)
of the lists surrounding the point. Those positions are used in many
Also, only the block and the closing line is indented; the current
line is left untouched.
-*** Added toggle for syntactic indentation.
-The function `c-toggle-syntactic-indentation' can be used to toggle
-syntactic indentation.
-
-** In sh-script, a continuation line is only indented if the backslash was
-preceded by a SPC or a TAB.
-
-** Perl mode has a new variable `perl-indent-continued-arguments'.
-
-** The old Octave mode bindings C-c f and C-c i have been changed
-to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate
-bindings on control characters--thus, C-c C-i C-b is the same as
-C-c C-i b, and so on.
-
-** Fortran mode changes:
-
-*** Fortran mode does more font-locking by default. Use level 3
-highlighting for the old default.
-
-*** Fortran mode has a new variable `fortran-directive-re'.
-Adapt this to match the format of any compiler directives you use.
-Lines that match are never indented, and are given distinctive font-locking.
-
-*** F90 mode and Fortran mode have new navigation commands
-`f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
-`f90-previous-block', `fortran-end-of-block',
-`fortran-beginning-of-block'.
-
-*** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow).
-It cannot deal with every code format, but ought to handle a sizeable
-majority.
-
-*** The new function `f90-backslash-not-special' can be used to change
-the syntax of backslashes in F90 buffers.
-
-** Reftex mode changes
-
-*** Changes to RefTeX's table of contents
-
-The new command keys "<" and ">" in the TOC buffer promote/demote the
-section at point or all sections in the current region, with full
-support for multifile documents.
-
-The new command `reftex-toc-recenter' (`C-c -') shows the current
-section in the TOC buffer without selecting the TOC window.
-Recentering can happen automatically in idle time when the option
-`reftex-auto-recenter-toc' is turned on. The highlight in the TOC
-buffer stays when the focus moves to a different window. A dedicated
-frame can show the TOC with the current section always automatically
-highlighted. The frame is created and deleted from the toc buffer
-with the `d' key.
-
-The toc window can be split off horizontally instead of vertically.
-See new option `reftex-toc-split-windows-horizontally'.
-
-Labels can be renamed globally from the table of contents using the
-key `M-%'.
-
-The new command `reftex-goto-label' jumps directly to a label
-location.
-
-*** Changes related to citations and BibTeX database files
-
-Commands that insert a citation now prompt for optional arguments when
-called with a prefix argument. Related new options are
-`reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'.
-
-The new command `reftex-create-bibtex-file' creates a BibTeX database
-with all entries referenced in the current document. The keys "e" and
-"E" allow to produce a BibTeX database file from entries marked in a
-citation selection buffer.
-
-The command `reftex-citation' uses the word in the buffer before the
-cursor as a default search string.
-
-The support for chapterbib has been improved. Different chapters can
-now use BibTeX or an explicit `thebibliography' environment.
-
-The macros which specify the bibliography file (like \bibliography)
-can be configured with the new option `reftex-bibliography-commands'.
-
-Support for jurabib has been added.
-
-*** Global index matched may be verified with a user function
-
-During global indexing, a user function can verify an index match.
-See new option `reftex-index-verify-function'.
-
-*** Parsing documents with many labels can be sped up.
-
-Operating in a document with thousands of labels can be sped up
-considerably by allowing RefTeX to derive the type of a label directly
-from the label prefix like `eq:' or `fig:'. The option
-`reftex-trust-label-prefix' needs to be configured in order to enable
-this feature. While the speed-up is significant, this may reduce the
-quality of the context offered by RefTeX to describe a label.
-
-*** Miscellaneous changes
-
-The macros which input a file in LaTeX (like \input, \include) can be
-configured in the new option `reftex-include-file-commands'.
-
-RefTeX supports global incremental search.
-
-** Prolog mode has a new variable `prolog-font-lock-keywords'
-to support use of font-lock.
-
-** HTML/SGML changes:
-
-*** Emacs now tries to set up buffer coding systems for HTML/XML files
-automatically.
-
-*** SGML mode has indentation and supports XML syntax.
-The new variable `sgml-xml-mode' tells SGML mode to use XML syntax.
-When this option is enabled, SGML tags are inserted in XML style,
-i.e., there is always a closing tag.
-By default, its setting is inferred on a buffer-by-buffer basis
-from the file name or buffer contents.
-
-*** The variable `sgml-transformation' has been renamed to
-`sgml-transformation-function'. The old name is still available as
-alias.
-
-*** `xml-mode' is now an alias for `sgml-mode', which has XML support.
-
-** TeX modes:
-
-*** C-c C-c prompts for a command to run, and tries to offer a good default.
-
-*** The user option `tex-start-options-string' has been replaced
-by two new user options: `tex-start-options', which should hold
-command-line options to feed to TeX, and `tex-start-commands' which should hold
-TeX commands to use at startup.
-
-*** verbatim environments are now highlighted in courier by font-lock
-and super/sub-scripts are made into super/sub-scripts.
-
-*** New major mode Doctex mode, for *.dtx files.
-
-** BibTeX mode:
-
-*** The new command `bibtex-url' browses a URL for the BibTeX entry at
-point (bound to C-c C-l and mouse-2, RET on clickable fields).
-
-*** The new command `bibtex-entry-update' (bound to C-c C-u) updates
-an existing BibTeX entry by inserting fields that may occur but are not
-present.
-
-*** New `bibtex-entry-format' option `required-fields', enabled by default.
-
-*** `bibtex-maintain-sorted-entries' can take values `plain',
-`crossref', and `entry-class' which control the sorting scheme used
-for BibTeX entries. `bibtex-sort-entry-class' controls the sorting
-scheme `entry-class'. TAB completion for reference keys and
-automatic detection of duplicates does not require anymore that
-`bibtex-maintain-sorted-entries' is non-nil.
-
-*** If the new variable `bibtex-parse-keys-fast' is non-nil,
-use fast but simplified algorithm for parsing BibTeX keys.
-
-*** If the new variable `bibtex-autoadd-commas' is non-nil,
-automatically add missing commas at end of BibTeX fields.
-
-*** The new variable `bibtex-autofill-types' contains a list of entry
-types for which fields are filled automatically (if possible).
+** Changes in Makefile mode
-*** The new command `bibtex-complete' completes word fragment before
-point according to context (bound to M-tab).
+*** Makefile mode has submodes for automake, gmake, makepp, BSD make and imake.
-*** The new commands `bibtex-find-entry' and `bibtex-find-crossref'
-locate entries and crossref'd entries (bound to C-c C-s and C-c C-x).
-Crossref fields are clickable (bound to mouse-2, RET).
+The former two couldn't be differentiated before, and the latter three
+are new. Font-locking is robust now and offers new customizable
+faces.
-*** In BibTeX mode the command `fill-paragraph' (M-q) fills
-individual fields of a BibTeX entry.
+*** The variable `makefile-query-one-target-method' has been renamed
+to `makefile-query-one-target-method-function'. The old name is still
+available as alias.
-*** The new variables `bibtex-files' and `bibtex-file-path' define a set
-of BibTeX files that are searched for entry keys.
+** Sql changes
-*** The new command `bibtex-validate-globally' checks for duplicate keys
-in multiple BibTeX files.
+*** The variable `sql-product' controls the highlighting of different
+SQL dialects. This variable can be set globally via Customize, on a
+buffer-specific basis via local variable settings, or for the current
+session using the new SQL->Product submenu. (This menu replaces the
+SQL->Highlighting submenu.)
-*** The new command `bibtex-copy-summary-as-kill' pushes summary
-of BibTeX entry to kill ring (bound to C-c C-t).
+The following values are supported:
-*** The new variables bibtex-expand-strings and
-bibtex-autokey-expand-strings control the expansion of strings when
-extracting the content of a BibTeX field.
+ ansi ANSI Standard (default)
+ db2 DB2
+ informix Informix
+ ingres Ingres
+ interbase Interbase
+ linter Linter
+ ms Microsoft
+ mysql MySQL
+ oracle Oracle
+ postgres Postgres
+ solid Solid
+ sqlite SQLite
+ sybase Sybase
-*** The variables `bibtex-autokey-name-case-convert' and
-`bibtex-autokey-titleword-case-convert' have been renamed to
-`bibtex-autokey-name-case-convert-function' and
-`bibtex-autokey-titleword-case-convert-function'. The old names are
-still available as aliases.
+The current product name will be shown on the mode line following the
+SQL mode indicator.
-** In Artist mode the variable `artist-text-renderer' has been
-renamed to `artist-text-renderer-function'. The old name is still
-available as alias.
+The technique of setting `sql-mode-font-lock-defaults' directly in
+your `.emacs' will no longer establish the default highlighting -- Use
+`sql-product' to accomplish this.
-** In Enriched mode, `set-left-margin' and `set-right-margin' are now
-by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
-and `C-c C-r'.
+ANSI keywords are always highlighted.
-** GUD changes:
+*** The function `sql-add-product-keywords' can be used to add
+font-lock rules to the product specific rules. For example, to have
+all identifiers ending in `_t' under MS SQLServer treated as a type,
+you would use the following line in your .emacs file:
-*** In GUD mode, when talking to GDB, C-x C-a C-j "jumps" the program
-counter to the specified source line (the one where point is).
+ (sql-add-product-keywords 'ms
+ '(("\\<\\w+_t\\>" . font-lock-type-face)))
-*** GUD mode has its own tool bar for controlling execution of the inferior
-and other common debugger commands.
+*** Oracle support includes keyword highlighting for Oracle 9i.
-*** The new package gdb-ui.el provides an enhanced graphical interface to
-GDB. You can interact with GDB through the GUD buffer in the usual way, but
-there are also further buffers which control the execution and describe the
-state of your program. It can separate the input/output of your program from
-that of GDB and watches expressions in the speedbar. It also uses features of
-Emacs 21/22 such as the toolbar, and bitmaps in the fringe to indicate
-breakpoints.
+Most SQL and PL/SQL keywords are implemented. SQL*Plus commands are
+highlighted in `font-lock-doc-face'.
-To use this package just type M-x gdb. See the Emacs manual if you want the
-old behaviour.
+*** Microsoft SQLServer support has been significantly improved.
-*** The variable tooltip-gud-tips-p has been removed. GUD tooltips can now be
-toggled independently of normal tooltips with the minor mode
-`gud-tooltip-mode'.
+Keyword highlighting for SqlServer 2000 is implemented.
+sql-interactive-mode defaults to use osql, rather than isql, because
+osql flushes its error stream more frequently. Thus error messages
+are displayed when they occur rather than when the session is
+terminated.
-*** In graphical mode, with a C program, GUD Tooltips have been extended to
-display the #define directive associated with an identifier when program is
-not executing.
+If the username and password are not provided to `sql-ms', osql is
+called with the `-E' command line argument to use the operating system
+credentials to authenticate the user.
-** GUD mode improvements for jdb:
+*** Postgres support is enhanced.
+Keyword highlighting of Postgres 7.3 is implemented. Prompting for
+the username and the pgsql `-U' option is added.
-*** Search for source files using jdb classpath and class information.
-Fast startup since there is no need to scan all source files up front.
-There is also no need to create and maintain lists of source
-directories to scan. Look at `gud-jdb-use-classpath' and
-`gud-jdb-classpath' customization variables documentation.
+*** MySQL support is enhanced.
+Keyword highlighting of MySql 4.0 is implemented.
-*** Supports the standard breakpoint (gud-break, gud-clear)
-set/clear operations from Java source files under the classpath, stack
-traversal (gud-up, gud-down), and run until current stack finish
-(gud-finish).
+*** Imenu support has been enhanced to locate tables, views, indexes,
+packages, procedures, functions, triggers, sequences, rules, and
+defaults.
-*** Supports new jdb (Java 1.2 and later) in addition to oldjdb
-(Java 1.1 jdb).
+*** Added SQL->Start SQLi Session menu entry which calls the
+appropriate `sql-interactive-mode' wrapper for the current setting of
+`sql-product'.
-*** The previous method of searching for source files has been
-preserved in case someone still wants/needs to use it.
-Set `gud-jdb-use-classpath' to nil.
+*** sql.el supports the SQLite interpreter--call 'sql-sqlite'.
-*** Added Customization Variables
+** Fortran mode changes
-**** `gud-jdb-command-name'. What command line to use to invoke jdb.
+*** F90 mode and Fortran mode have support for `hs-minor-mode' (hideshow).
+It cannot deal with every code format, but ought to handle a sizeable
+majority.
-**** `gud-jdb-use-classpath'. Allows selection of java source file searching
-method: set to t for new method, nil to scan `gud-jdb-directories' for
-java sources (previous method).
+*** F90 mode and Fortran mode have new navigation commands
+`f90-end-of-block', `f90-beginning-of-block', `f90-next-block',
+`f90-previous-block', `fortran-end-of-block',
+`fortran-beginning-of-block'.
-**** `gud-jdb-directories'. List of directories to scan and search for Java
-classes using the original gud-jdb method (if `gud-jdb-use-classpath'
-is nil).
+*** Fortran mode does more font-locking by default. Use level 3
+highlighting for the old default.
-*** Minor Improvements
+*** Fortran mode has a new variable `fortran-directive-re'.
+Adapt this to match the format of any compiler directives you use.
+Lines that match are never indented, and are given distinctive font-locking.
-**** The STARTTLS wrapper (starttls.el) can now use GNUTLS
-instead of the OpenSSL based `starttls' tool. For backwards
-compatibility, it prefers `starttls', but you can toggle
-`starttls-use-gnutls' to switch to GNUTLS (or simply remove the
-`starttls' tool).
+*** The new function `f90-backslash-not-special' can be used to change
+the syntax of backslashes in F90 buffers.
-**** Do not allow debugger output history variable to grow without bounds.
+** Miscellaneous programming mode changes
-** Auto-Revert changes:
+*** In sh-script, a continuation line is only indented if the backslash was
+preceded by a SPC or a TAB.
-*** You can now use Auto Revert mode to `tail' a file.
+*** Perl mode has a new variable `perl-indent-continued-arguments'.
-If point is at the end of a file buffer before reverting, Auto Revert
-mode keeps it at the end after reverting. Similarly if point is
-displayed at the end of a file buffer in any window, it stays at
-the end of the buffer in that window. This allows to tail a file:
-just put point at the end of the buffer and it stays there. This
-rule applies to file buffers. For non-file buffers, the behavior can
-be mode dependent.
+*** The old Octave mode bindings C-c f and C-c i have been changed
+to C-c C-f and C-c C-i. The C-c C-i subcommands now have duplicate
+bindings on control characters--thus, C-c C-i C-b is the same as
+C-c C-i b, and so on.
-If you are sure that the file will only change by growing at the end,
-then you can tail the file more efficiently by using the new minor
-mode Auto Revert Tail mode. The function `auto-revert-tail-mode'
-toggles this mode.
+*** Prolog mode has a new variable `prolog-font-lock-keywords'
+to support use of font-lock.
-*** Auto Revert mode is now more careful to avoid excessive reverts and
-other potential problems when deciding which non-file buffers to
-revert. This matters especially if Global Auto Revert mode is enabled
-and `global-auto-revert-non-file-buffers' is non-nil. Auto Revert
-mode only reverts a non-file buffer if the buffer has a non-nil
-`revert-buffer-function' and a non-nil `buffer-stale-function', which
-decides whether the buffer should be reverted. Currently, this means
-that auto reverting works for Dired buffers (although this may not
-work properly on all operating systems) and for the Buffer Menu.
+** VC Changes
-*** If the new user option `auto-revert-check-vc-info' is non-nil, Auto
-Revert mode reliably updates version control info (such as the version
-control number in the mode line), in all version controlled buffers in
-which it is active. If the option is nil, the default, then this info
-only gets updated whenever the buffer gets reverted.
+*** New backends for Subversion and Meta-CVS.
-** recentf changes.
+*** The new variable `vc-cvs-global-switches' specifies switches that
+are passed to any CVS command invoked by VC.
-The recent file list is now automatically cleaned up when recentf mode is
-enabled. The new option `recentf-auto-cleanup' controls when to do
-automatic cleanup.
+These switches are used as "global options" for CVS, which means they
+are inserted before the command name. For example, this allows you to
+specify a compression level using the `-z#' option for CVS.
-The ten most recent files can be quickly opened by using the shortcut
-keys 1 to 9, and 0, when the recent list is displayed in a buffer via
-the `recentf-open-files', or `recentf-open-more-files' commands.
+*** The key C-x C-q only changes the read-only state of the buffer
+(toggle-read-only). It no longer checks files in or out.
-The `recentf-keep' option replaces `recentf-keep-non-readable-files-p'
-and provides a more general mechanism to customize which file names to
-keep in the recent list.
+We made this change because we held a poll and found that many users
+were unhappy with the previous behavior. If you do prefer this
+behavior, you can bind `vc-toggle-read-only' to C-x C-q in your
+`.emacs' file:
-With the more advanced option `recentf-filename-handlers', you can
-specify functions that successively transform recent file names. For
-example, if set to `file-truename' plus `abbreviate-file-name', the
-same file will not be in the recent list with different symbolic
-links, and the file name will be abbreviated.
+ (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
-To follow naming convention, `recentf-menu-append-commands-flag'
-replaces the misnamed option `recentf-menu-append-commands-p'. The
-old name remains available as alias, but has been marked obsolete.
+The function `vc-toggle-read-only' will continue to exist.
-** Desktop package
+*** VC-Annotate mode enhancements
-*** Desktop saving is now a minor mode, `desktop-save-mode'.
+In VC-Annotate mode, you can now use the following key bindings for
+enhanced functionality to browse the annotations of past revisions, or
+to view diffs or log entries directly from vc-annotate-mode:
-*** The variable `desktop-enable' is obsolete.
+ P: annotates the previous revision
+ N: annotates the next revision
+ J: annotates the revision at line
+ A: annotates the revision previous to line
+ D: shows the diff of the revision at line with its previous revision
+ L: shows the log of the revision at line
+ W: annotates the workfile (most up to date) version
-Customize `desktop-save-mode' to enable desktop saving.
+** pcl-cvs changes
-*** Buffers are saved in the desktop file in the same order as that in the
-buffer list.
+*** In pcl-cvs mode, there is a new `d y' command to view the diffs
+between the local version of the file and yesterday's head revision
+in the repository.
-*** The desktop package can be customized to restore only some buffers
-immediately, remaining buffers are restored lazily (when Emacs is
-idle).
+*** In pcl-cvs mode, there is a new `d r' command to view the changes
+anyone has committed to the repository since you last executed
+`checkout', `update' or `commit'. That means using cvs diff options
+-rBASE -rHEAD.
-*** New commands:
- - desktop-revert reverts to the last loaded desktop.
- - desktop-change-dir kills current desktop and loads a new.
- - desktop-save-in-desktop-dir saves desktop in the directory from which
- it was loaded.
- - desktop-lazy-complete runs the desktop load to completion.
- - desktop-lazy-abort aborts lazy loading of the desktop.
+** Diff changes
-*** New customizable variables:
- - desktop-save. Determines whether the desktop should be saved when it is
- killed.
- - desktop-file-name-format. Format in which desktop file names should be saved.
- - desktop-path. List of directories in which to lookup the desktop file.
- - desktop-locals-to-save. List of local variables to save.
- - desktop-globals-to-clear. List of global variables that `desktop-clear' will clear.
- - desktop-clear-preserve-buffers-regexp. Regexp identifying buffers that `desktop-clear'
- should not delete.
- - desktop-restore-eager. Number of buffers to restore immediately. Remaining buffers are
- restored lazily (when Emacs is idle).
- - desktop-lazy-verbose. Verbose reporting of lazily created buffers.
- - desktop-lazy-idle-delay. Idle delay before starting to create buffers.
+*** M-x diff uses Diff mode instead of Compilation mode.
-*** New command line option --no-desktop
+*** Diff mode key bindings changed.
-*** New hooks:
- - desktop-after-read-hook run after a desktop is loaded.
- - desktop-no-desktop-file-hook run when no desktop file is found.
+These are the new bindings:
-** The saveplace.el package now filters out unreadable files.
+C-c C-e diff-ediff-patch (old M-A)
+C-c C-n diff-restrict-view (old M-r)
+C-c C-r diff-reverse-direction (old M-R)
+C-c C-u diff-context->unified (old M-U)
+C-c C-w diff-refine-hunk (old C-c C-r)
-When you exit Emacs, the saved positions in visited files no longer
-include files that aren't readable, e.g. files that don't exist.
-Customize the new option `save-place-forget-unreadable-files' to nil
-to get the old behavior. The new options `save-place-save-skipped'
-and `save-place-skip-check-regexp' allow further fine-tuning of this
-feature.
+To convert unified to context format, use C-u C-c C-u.
+In addition, C-c C-u now operates on the region
+in Transient Mark mode when the mark is active.
** EDiff changes.
*** New language parsing features
-**** The `::' qualifier triggers C++ parsing in C file.
-
-Previously, only the `template' and `class' keywords had this effect.
-
-**** The GCC __attribute__ keyword is now recognized and ignored.
-
**** New language HTML.
Tags are generated for `title' as well as `h1', `h2', and `h3'. Also,
when `name=' is used inside an anchor and whenever `id=' is used.
-**** In Makefiles, constants are tagged.
-
-If you want the old behavior instead, thus avoiding to increase the
-size of the tags file, use the --no-globals option.
-
-**** New language Lua.
-
-All functions are tagged.
-
-**** In Perl, packages are tags.
-
-Subroutine tags are named from their package. You can jump to sub tags
-as you did before, by the sub name, or additionally by looking for
-package::sub.
-
-**** In Prolog, etags creates tags for rules in addition to predicates.
-
**** New language PHP.
Functions, classes and defines are tags. If the --members option is
specified to etags, variables are tags also.
-**** New default keywords for TeX.
-
-The new keywords are def, newcommand, renewcommand, newenvironment and
-renewenvironment.
-
-**** In C and derived languages, etags creates tags for #undef
-
-*** Honor #line directives.
-
-When Etags parses an input file that contains C preprocessor's #line
-directives, it creates tags using the file name and line number
-specified in those directives. This is useful when dealing with code
-created from Cweb source files. When Etags tags the generated file, it
-writes tags pointing to the source file.
-
-*** New option --parse-stdin=FILE.
-
-This option is mostly useful when calling etags from programs. It can
-be used (only once) in place of a file name on the command line. Etags
-reads from standard input and marks the produced tags as belonging to
-the file FILE.
-
-*** The --members option is now the default.
-
-Use --no-members if you want the old default behaviour of not tagging
-struct members in C, members variables in C++ and variables in PHP.
-
-** Ctags changes.
+**** New language Lua.
-*** Ctags now allows duplicate tags
+All functions are tagged.
-** VC Changes
+**** The `::' qualifier triggers C++ parsing in C file.
-*** The key C-x C-q only changes the read-only state of the buffer
-(toggle-read-only). It no longer checks files in or out.
+Previously, only the `template' and `class' keywords had this effect.
-We made this change because we held a poll and found that many users
-were unhappy with the previous behavior. If you do prefer this
-behavior, you can bind `vc-toggle-read-only' to C-x C-q in your
-`.emacs' file:
+**** The GCC __attribute__ keyword is now recognized and ignored.
- (global-set-key "\C-x\C-q" 'vc-toggle-read-only)
+**** In C and derived languages, etags creates tags for #undef
-The function `vc-toggle-read-only' will continue to exist.
+**** In Makefiles, constants are tagged.
-*** The new variable `vc-cvs-global-switches' specifies switches that
-are passed to any CVS command invoked by VC.
+If you want the old behavior instead, thus avoiding to increase the
+size of the tags file, use the --no-globals option.
-These switches are used as "global options" for CVS, which means they
-are inserted before the command name. For example, this allows you to
-specify a compression level using the `-z#' option for CVS.
+**** In Perl, packages are tags.
-*** New backends for Subversion and Meta-CVS.
+Subroutine tags are named from their package. You can jump to sub tags
+as you did before, by the sub name, or additionally by looking for
+package::sub.
-*** VC-Annotate mode enhancements
+**** In Prolog, etags creates tags for rules in addition to predicates.
-In VC-Annotate mode, you can now use the following key bindings for
-enhanced functionality to browse the annotations of past revisions, or
-to view diffs or log entries directly from vc-annotate-mode:
+**** New default keywords for TeX.
- P: annotates the previous revision
- N: annotates the next revision
- J: annotates the revision at line
- A: annotates the revision previous to line
- D: shows the diff of the revision at line with its previous revision
- L: shows the log of the revision at line
- W: annotates the workfile (most up to date) version
+The new keywords are def, newcommand, renewcommand, newenvironment and
+renewenvironment.
-** pcl-cvs changes:
+*** Honor #line directives.
-*** In pcl-cvs mode, there is a new `d y' command to view the diffs
-between the local version of the file and yesterday's head revision
-in the repository.
+When Etags parses an input file that contains C preprocessor's #line
+directives, it creates tags using the file name and line number
+specified in those directives. This is useful when dealing with code
+created from Cweb source files. When Etags tags the generated file, it
+writes tags pointing to the source file.
-*** In pcl-cvs mode, there is a new `d r' command to view the changes
-anyone has committed to the repository since you last executed
-`checkout', `update' or `commit'. That means using cvs diff options
--rBASE -rHEAD.
+*** New option --parse-stdin=FILE.
-** The new variable `mail-default-directory' specifies
-`default-directory' for mail buffers. This directory is used for
-auto-save files of mail buffers. It defaults to "~/".
+This option is mostly useful when calling etags from programs. It can
+be used (only once) in place of a file name on the command line. Etags
+reads from standard input and marks the produced tags as belonging to
+the file FILE.
-** The mode line can indicate new mail in a directory or file.
+*** The --members option is now the default.
-See the documentation of the user option
-`display-time-mail-directory'.
+Use --no-members if you want the old default behaviour of not tagging
+struct members in C, members variables in C++ and variables in PHP.
-** Rmail changes:
+** Ctags changes.
-*** Rmail now displays 5-digit message ids in its summary buffer.
+*** Ctags now allows duplicate tags
-*** The new commands rmail-end-of-message and rmail-summary end-of-message,
-by default bound to `/', go to the end of the current mail message in
-Rmail and Rmail summary buffers.
+** Rmail changes
*** Support for `movemail' from GNU mailutils was added to Rmail.
-This version of `movemail' allows to read mail from a wide range of
+This version of `movemail' allows you to read mail from a wide range of
mailbox formats, including remote POP3 and IMAP4 mailboxes with or
without TLS encryption. If GNU mailutils is installed on the system
and its version of `movemail' can be found in exec-path, it will be
used instead of the native one.
+*** The new commands rmail-end-of-message and rmail-summary end-of-message,
+by default bound to `/', go to the end of the current mail message in
+Rmail and Rmail summary buffers.
+
+*** Rmail now displays 5-digit message ids in its summary buffer.
+
** Gnus package
*** Gnus now includes Sieve and PGG
Upgraded to MH-E version 8.0.3. There have been major changes since
version 5.0.2; see MH-E-NEWS for details.
-** Calendar changes:
+** Miscellaneous mail changes
-*** The meanings of C-x < and C-x > have been interchanged.
-< means to scroll backward in time, and > means to scroll forward.
+*** The new variable `mail-default-directory' specifies
+`default-directory' for mail buffers. This directory is used for
+auto-save files of mail buffers. It defaults to "~/".
-*** You can now use < and >, instead of C-x < and C-x >, to scroll
-the calendar left or right.
+*** The mode line can indicate new mail in a directory or file.
+
+See the documentation of the user option `display-time-mail-directory'.
+
+** Calendar changes
*** There is a new calendar package, icalendar.el, that can be used to
convert Emacs diary entries to/from the iCalendar format.
*** The new package cal-html.el writes HTML files with calendar and
diary entries.
+*** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
+and `diary-from-outlook-rmail' can be used to import diary entries
+from Outlook-format appointments in mail messages. The variable
+`diary-outlook-formats' can be customized to recognize additional
+formats.
+
+*** The procedure for activating appointment reminders has changed:
+use the new function `appt-activate'. The new variable
+`appt-display-format' controls how reminders are displayed, replacing
+`appt-issue-message', `appt-visible', and `appt-msg-window'.
+
+*** The function `simple-diary-display' now by default sets a header line.
+This can be controlled through the variables `diary-header-line-flag'
+and `diary-header-line-format'.
+
*** Diary sexp entries can have custom marking in the calendar.
Diary sexp functions which only apply to certain days (such as
`diary-block' or `diary-cyclic') now take an optional parameter MARK,
face. This lets you have different colors or markings for vacations,
appointments, paydays or anything else using a sexp.
+*** The meanings of C-x < and C-x > have been interchanged.
+< means to scroll backward in time, and > means to scroll forward.
+
+*** You can now use < and >, instead of C-x < and C-x >, to scroll
+the calendar left or right.
+
*** The new function `calendar-goto-day-of-year' (g D) prompts for a
year and day number, and moves to that date. Negative day numbers
count backward from the end of the year.
prompts for a year and a week number, and moves to the first
day of that ISO week.
-*** The new variable `calendar-minimum-window-height' affects the
-window generated by the function `generate-calendar-window'.
-
*** The functions `holiday-easter-etc' and `holiday-advent' now take
optional arguments, in order to only report on the specified holiday
rather than all. This makes customization of variables such as
`christian-holidays' simpler.
-*** The function `simple-diary-display' now by default sets a header line.
-This can be controlled through the variables `diary-header-line-flag'
-and `diary-header-line-format'.
-
-*** The procedure for activating appointment reminders has changed:
-use the new function `appt-activate'. The new variable
-`appt-display-format' controls how reminders are displayed, replacing
-`appt-issue-message', `appt-visible', and `appt-msg-window'.
-
-*** The new functions `diary-from-outlook', `diary-from-outlook-gnus',
-and `diary-from-outlook-rmail' can be used to import diary entries
-from Outlook-format appointments in mail messages. The variable
-`diary-outlook-formats' can be customized to recognize additional
-formats.
+*** The new variable `calendar-minimum-window-height' affects the
+window generated by the function `generate-calendar-window'.
-** Speedbar changes:
+** Speedbar changes
*** Speedbar items can now be selected by clicking mouse-1, based on
the `mouse-1-click-follows-link' mechanism.
-*** SPC and DEL are no longer bound to scroll up/down in the speedbar
-keymap.
-
*** The new command `speedbar-toggle-line-expansion', bound to SPC,
contracts or expands the line under the cursor.
respectively, expand and contract the line under cursor with all of
its descendents.
+*** The new user option `speedbar-use-tool-tips-flag', if non-nil,
+means to display tool-tips for speedbar items.
+
*** The new user option `speedbar-query-confirmation-method' controls
how querying is performed for file operations. A value of 'always
means to always query before file operations; 'none-but-delete means
speedbar was started from.) A number such as 1 or -1 means to pass
that number to `other-frame'.
-*** The new user option `speedbar-use-tool-tips-flag', if non-nil,
-means to display tool-tips for speedbar items.
+*** SPC and DEL are no longer bound to scroll up/down in the speedbar
+keymap.
*** The frame management code in speedbar.el has been split into a new
`dframe' library. Emacs Lisp code that makes use of the speedbar
`speedbar-update-speed' and `speedbar-navigating-speed' are also
obsolete; use `dframe-update-speed' instead.
-** sql changes.
-
-*** The variable `sql-product' controls the highlighting of different
-SQL dialects. This variable can be set globally via Customize, on a
-buffer-specific basis via local variable settings, or for the current
-session using the new SQL->Product submenu. (This menu replaces the
-SQL->Highlighting submenu.)
-
-The following values are supported:
-
- ansi ANSI Standard (default)
- db2 DB2
- informix Informix
- ingres Ingres
- interbase Interbase
- linter Linter
- ms Microsoft
- mysql MySQL
- oracle Oracle
- postgres Postgres
- solid Solid
- sqlite SQLite
- sybase Sybase
-
-The current product name will be shown on the mode line following the
-SQL mode indicator.
-
-The technique of setting `sql-mode-font-lock-defaults' directly in
-your `.emacs' will no longer establish the default highlighting -- Use
-`sql-product' to accomplish this.
-
-ANSI keywords are always highlighted.
-
-*** The function `sql-add-product-keywords' can be used to add
-font-lock rules to the product specific rules. For example, to have
-all identifiers ending in `_t' under MS SQLServer treated as a type,
-you would use the following line in your .emacs file:
-
- (sql-add-product-keywords 'ms
- '(("\\<\\w+_t\\>" . font-lock-type-face)))
-
-*** Oracle support includes keyword highlighting for Oracle 9i.
-
-Most SQL and PL/SQL keywords are implemented. SQL*Plus commands are
-highlighted in `font-lock-doc-face'.
-
-*** Microsoft SQLServer support has been significantly improved.
-
-Keyword highlighting for SqlServer 2000 is implemented.
-sql-interactive-mode defaults to use osql, rather than isql, because
-osql flushes its error stream more frequently. Thus error messages
-are displayed when they occur rather than when the session is
-terminated.
-
-If the username and password are not provided to `sql-ms', osql is
-called with the `-E' command line argument to use the operating system
-credentials to authenticate the user.
+** battery.el changes
-*** Postgres support is enhanced.
-Keyword highlighting of Postgres 7.3 is implemented. Prompting for
-the username and the pgsql `-U' option is added.
+*** display-battery-mode replaces display-battery.
-*** MySQL support is enhanced.
-Keyword highlighting of MySql 4.0 is implemented.
+*** battery.el now works on recent versions of OS X.
-*** Imenu support has been enhanced to locate tables, views, indexes,
-packages, procedures, functions, triggers, sequences, rules, and
-defaults.
+** Games
-*** Added SQL->Start SQLi Session menu entry which calls the
-appropriate `sql-interactive-mode' wrapper for the current setting of
-`sql-product'.
+*** The game `mpuz' is enhanced.
-*** sql.el supports the SQLite interpreter--call 'sql-sqlite'.
+`mpuz' now allows the 2nd factor not to have two identical digits. By
+default, all trivial operations involving whole lines are performed
+automatically. The game uses faces for better visual feedback.
-** FFAP changes:
+** Obsolete and deleted packages
-*** New ffap commands and keybindings:
+*** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead.
-C-x C-r (`ffap-read-only'),
-C-x C-v (`ffap-alternate-file'), C-x C-d (`ffap-list-directory'),
-C-x 4 r (`ffap-read-only-other-window'), C-x 4 d (`ffap-dired-other-window'),
-C-x 5 r (`ffap-read-only-other-frame'), C-x 5 d (`ffap-dired-other-frame').
+*** iso-acc.el is now obsolete. Use one of the latin input methods instead.
-*** FFAP accepts wildcards in a file name by default.
+*** zone-mode.el is now obsolete. Use dns-mode.el instead.
-C-x C-f passes the file name to `find-file' with non-nil WILDCARDS
-argument, which visits multiple files, and C-x d passes it to `dired'.
+*** cplus-md.el has been deleted.
-** Changes in Skeleton
+** Miscellaneous
-*** In skeleton.el, `-' marks the `skeleton-point' without interregion interaction.
+*** The variable `woman-topic-at-point' is renamed
+to `woman-use-topic-at-point' and behaves differently: if this
+variable is non-nil, the `woman' command uses the word at point
+automatically, without asking for a confirmation. Otherwise, the word
+at point is suggested as default, but not inserted at the prompt.
-`@' has reverted to only setting `skeleton-positions' and no longer
-sets `skeleton-point'. Skeletons which used @ to mark
-`skeleton-point' independent of `_' should now use `-' instead. The
-updated `skeleton-insert' docstring explains these new features along
-with other details of skeleton construction.
+*** You can now customize `fill-nobreak-predicate' to control where
+filling can break lines. The value is now normally a list of
+functions, but it can also be a single function, for compatibility.
-*** The variables `skeleton-transformation', `skeleton-filter', and
-`skeleton-pair-filter' have been renamed to
-`skeleton-transformation-function', `skeleton-filter-function', and
-`skeleton-pair-filter-function'. The old names are still available
-as aliases.
+Emacs provide two predicates, `fill-single-word-nobreak-p' and
+`fill-french-nobreak-p', for use as the value of
+`fill-nobreak-predicate'.
-** Hideshow mode changes
+*** M-x view-file and commands that use it now avoid interfering
+with special modes such as Tar mode.
-*** New variable `hs-set-up-overlay' allows customization of the overlay
-used to effect hiding for hideshow minor mode. Integration with isearch
-handles the overlay property `display' specially, preserving it during
-temporary overlay showing in the course of an isearch operation.
+*** `global-whitespace-mode' is a new alias for `whitespace-global-mode'.
-*** New variable `hs-allow-nesting' non-nil means that hiding a block does
-not discard the hidden state of any "internal" blocks; when the parent
-block is later shown, the internal blocks remain hidden. Default is nil.
+*** The saveplace.el package now filters out unreadable files.
-** `hide-ifdef-mode' now uses overlays rather than selective-display
-to hide its text. This should be mostly transparent but slightly
-changes the behavior of motion commands like C-e and C-p.
+When you exit Emacs, the saved positions in visited files no longer
+include files that aren't readable, e.g. files that don't exist.
+Customize the new option `save-place-forget-unreadable-files' to nil
+to get the old behavior. The new options `save-place-save-skipped'
+and `save-place-skip-check-regexp' allow further fine-tuning of this
+feature.
-** `partial-completion-mode' now handles partial completion on directory names.
+*** Commands `winner-redo' and `winner-undo', from winner.el, are now
+bound to C-c <left> and C-c <right>, respectively. This is an
+incompatible change.
-** The type-break package now allows `type-break-file-name' to be nil
+*** The type-break package now allows `type-break-file-name' to be nil
and if so, doesn't store any data across sessions. This is handy if
you don't want the `.type-break' file in your home directory or are
annoyed by the need for interaction when you kill Emacs.
-** `ps-print' can now print characters from the mule-unicode charsets.
+*** `ps-print' can now print characters from the mule-unicode charsets.
Printing text with characters from the mule-unicode-* sets works with
`ps-print', provided that you have installed the appropriate BDF
fonts. See the file INSTALL for URLs where you can find these fonts.
-** New command `strokes-global-set-stroke-string'.
+*** New command `strokes-global-set-stroke-string'.
This is like `strokes-global-set-stroke', but it allows you to bind
the stroke directly to a string to insert. This is convenient for
using strokes as an input method.
-** Emacs server changes:
-
-*** You can have several Emacs servers on the same machine.
+*** In Outline mode, `hide-body' no longer hides lines at the top
+of the file that precede the first header line.
- % emacs --eval '(setq server-name "foo")' -f server-start &
- % emacs --eval '(setq server-name "bar")' -f server-start &
- % emacsclient -s foo file1
- % emacsclient -s bar file2
+*** `hide-ifdef-mode' now uses overlays rather than selective-display
+to hide its text. This should be mostly transparent but slightly
+changes the behavior of motion commands like C-e and C-p.
-*** The `emacsclient' command understands the options `--eval' and
-`--display' which tell Emacs respectively to evaluate the given Lisp
-expression and to use the given display when visiting files.
+*** In Artist mode the variable `artist-text-renderer' has been
+renamed to `artist-text-renderer-function'. The old name is still
+available as alias.
-*** User option `server-mode' can be used to start a server process.
+*** In Enriched mode, `set-left-margin' and `set-right-margin' are now
+by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
+and `C-c C-r'.
-** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
+*** `partial-completion-mode' now handles partial completion on directory names.
-** You can now disable pc-selection-mode after enabling it.
+*** You can now disable pc-selection-mode after enabling it.
M-x pc-selection-mode behaves like a proper minor mode, and with no
argument it toggles the mode. Turning off PC-Selection mode restores
the global key bindings that were replaced by turning on the mode.
-** `uniquify-strip-common-suffix' tells uniquify to prefer
+*** `uniquify-strip-common-suffix' tells uniquify to prefer
`file|dir1' and `file|dir2' to `file|dir1/subdir' and `file|dir2/subdir'.
-** Support for `magic cookie' standout modes has been removed.
-
-Emacs still works on terminals that require magic cookies in order to
-use standout mode, but they can no longer display mode-lines in
-inverse-video.
-
-** The game `mpuz' is enhanced.
+*** New user option `add-log-always-start-new-record'.
-`mpuz' now allows the 2nd factor not to have two identical digits. By
-default, all trivial operations involving whole lines are performed
-automatically. The game uses faces for better visual feedback.
+When this option is enabled, M-x add-change-log-entry always
+starts a new record regardless of when the last record is.
-** battery.el changes:
+*** M-x compare-windows now can automatically skip non-matching text to
+resync points in both windows.
-*** display-battery-mode replaces display-battery.
+*** PO translation files are decoded according to their MIME headers
+when Emacs visits them.
-*** battery.el now works on recent versions of OS X.
+*** Telnet now prompts you for a port number with C-u M-x telnet.
-** calculator.el now has radix grouping mode.
+*** calculator.el now has radix grouping mode.
To enable this, set `calculator-output-radix' non-nil. In this mode a
separator character is used every few digits, making it easier to see
byte boundaries etc. For more info, see the documentation of the
variable `calculator-radix-grouping-mode'.
-** fast-lock.el and lazy-lock.el are obsolete. Use jit-lock.el instead.
-
-** iso-acc.el is now obsolete. Use one of the latin input methods instead.
-
-** zone-mode.el is now obsolete. Use dns-mode.el instead.
-
-** cplus-md.el has been deleted.
-
-** Ewoc changes
-
-*** The new function `ewoc-delete' deletes specified nodes.
-
-*** `ewoc-create' now takes optional arg NOSEP, which inhibits insertion of
-a newline after each pretty-printed entry and after the header and footer.
-This allows you to create multiple-entry ewocs on a single line and to
-effect "invisible" nodes by arranging for the pretty-printer to not print
-anything for those nodes.
-
-For example, these two sequences of expressions behave identically:
-
-;; NOSEP nil
-(defun PP (data) (insert (format "%S" data)))
-(ewoc-create 'PP "start\n")
+*** LDAP support now defaults to ldapsearch from OpenLDAP version 2.
-;; NOSEP t
-(defun PP (data) (insert (format "%S\n" data)))
-(ewoc-create 'PP "start\n\n" "\n" t)
+*** The terminal emulation code in term.el has been improved; it can
+run most curses applications now.
-** Locate changes
+*** Support for `magic cookie' standout modes has been removed.
-*** By default, reverting the *Locate* buffer now just runs the last
-`locate' command back over again without offering to update the locate
-database (which normally only works if you have root privileges). If
-you prefer the old behavior, set the new customizable option
-`locate-update-when-revert' to t.
+Emacs still works on terminals that require magic cookies in order to
+use standout mode, but they can no longer display mode-lines in
+inverse-video.
\f
* Changes in Emacs 22.1 on non-free operating systems
shared computers, and the default HOME directory is less likely to be
read-only on computers that are administered by someone else.
-** Passing resources on the command line now works on MS Windows.
-
-You can use --xrm to pass resource settings to Emacs, overriding any
-existing values. For example:
-
- emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
-
-will start up Emacs on an initial frame of 100x20 with red background,
-irrespective of geometry or background setting on the Windows registry.
-
-** On MS Windows, the "system caret" now follows the cursor.
-
-This enables Emacs to work better with programs that need to track the
-cursor, for example screen magnifiers and text to speech programs.
-When such a program is in use, the system caret is made visible
-instead of Emacs drawing its own cursor. This seems to be required by
-some programs. The new variable w32-use-visible-system-caret allows
-the caret visibility to be manually toggled.
-
-** Tooltips now work on MS Windows.
-
-See the Emacs 21.1 NEWS entry for tooltips for details.
-
** Images are now supported on MS Windows.
PBM and XBM images are supported out of the box. Other image formats
Windows, or when other software provides hooks into the system level
sound support for those formats.
-** Different shaped mouse pointers are supported on MS Windows.
+** Tooltips now work on MS Windows.
-The mouse pointer changes shape depending on what is under the pointer.
+See the Emacs 21.1 NEWS entry for tooltips for details.
** Pointing devices with more than 3 buttons are now supported on MS Windows.
whether Emacs should handle the extra buttons itself (the default), or
pass them to Windows to be handled with system-wide functions.
+** Passing resources on the command line now works on MS Windows.
+
+You can use --xrm to pass resource settings to Emacs, overriding any
+existing values. For example:
+
+ emacs --xrm "Emacs.Background:red" --xrm "Emacs.Geometry:100x20"
+
+will start up Emacs on an initial frame of 100x20 with red background,
+irrespective of geometry or background setting on the Windows registry.
+
** Emacs takes note of colors defined in Control Panel on MS-Windows.
The Control Panel defines some default colors for applications in much
`list-colors-display' shows the list of System color names, in case
you wish to use them in other faces.
-** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations.
-
-Those systems use Unicode internally, so this allows Emacs to share
-multilingual text with other applications. On other versions of
-MS Windows, Emacs now uses the appropriate locale coding-system, so
-the clipboard should work correctly for your local language without
-any customizations.
-
** Running in a console window in Windows now uses the console size.
Previous versions of Emacs erred on the side of having a usable Emacs
other than 80x25, you can still manually set
w32-use-full-screen-buffer to t.
+** Different shaped mouse pointers are supported on MS Windows.
+
+The mouse pointer changes shape depending on what is under the pointer.
+
+** On MS Windows, the "system caret" now follows the cursor.
+
+This enables Emacs to work better with programs that need to track the
+cursor, for example screen magnifiers and text to speech programs.
+When such a program is in use, the system caret is made visible
+instead of Emacs drawing its own cursor. This seems to be required by
+some programs. The new variable w32-use-visible-system-caret allows
+the caret visibility to be manually toggled.
+
+** On MS Windows NT/W2K/XP, Emacs uses Unicode for clipboard operations.
+
+Those systems use Unicode internally, so this allows Emacs to share
+multilingual text with other applications. On other versions of
+MS Windows, Emacs now uses the appropriate locale coding-system, so
+the clipboard should work correctly for your local language without
+any customizations.
+
** On Mac OS, `keyboard-coding-system' changes based on the keyboard script.
** The variable `mac-keyboard-text-encoding' and the constants
\f
* Incompatible Lisp Changes in Emacs 22.1
-** The `read-file-name' function now returns a null string if the
-user just types RET.
-
-** The function find-operation-coding-system may be called with a cons
-(FILENAME . BUFFER) in the second argument if the first argument
-OPERATION is `insert-file-contents', and thus a function registered in
-`file-coding-system-alist' is also called with such an argument.
-
-** The variables post-command-idle-hook and post-command-idle-delay have
-been removed. Use run-with-idle-timer instead.
-
-** `suppress-keymap' now works by remapping `self-insert-command' to
-the command `undefined'. (In earlier Emacs versions, it used
-`substitute-key-definition' to rebind self inserting characters to
-`undefined'.)
-
** Mode line display ignores text properties as well as the
:propertize and :eval forms in the value of a variable whose
`risky-local-variable' property is nil.
argument `artificial' to a non-nil value, to prevent Emacs from
deleting the part of subprocess output that matches the input.
-** Support for Mocklisp has been removed.
-
-** The variable `memory-full' now remains t until
-there is no longer a shortage of memory.
+** The `read-file-name' function now returns a null string if the
+user just types RET.
-** When Emacs receives a USR1 or USR2 signal, this generates
-input events: sigusr1 or sigusr2. Use special-event-map to
-handle these events.
+** The variables post-command-idle-hook and post-command-idle-delay have
+been removed. Use run-with-idle-timer instead.
** A hex or octal escape in a string constant forces the string to
be multibyte or unibyte, respectively.
`glyph-face' must be used to create and decode glyph codes in
display tables.
+** `suppress-keymap' now works by remapping `self-insert-command' to
+the command `undefined'. (In earlier Emacs versions, it used
+`substitute-key-definition' to rebind self inserting characters to
+`undefined'.)
+
+** The third argument of `accept-process-output' is now milliseconds.
+It used to be microseconds.
+
+** The function find-operation-coding-system may be called with a cons
+(FILENAME . BUFFER) in the second argument if the first argument
+OPERATION is `insert-file-contents', and thus a function registered in
+`file-coding-system-alist' is also called with such an argument.
+
+** When Emacs receives a USR1 or USR2 signal, this generates
+input events: sigusr1 or sigusr2. Use special-event-map to
+handle these events.
+
+** The variable `memory-full' now remains t until
+there is no longer a shortage of memory.
+
+** Support for Mocklisp has been removed.
+
\f
* Lisp Changes in Emacs 22.1
** General Lisp changes:
-*** The function `expt' handles negative exponents differently.
-The value for `(expt A B)', if both A and B are integers and B is
-negative, is now a float. For example: (expt 2 -2) => 0.25.
+*** New syntax: \s now stands for the SPACE character.
+
+`?\s' is a new way to write the space character. You must make sure
+it is not followed by a dash, since `?\s-...' indicates the "super"
+modifier. However, it would be strange to write a character constant
+and a following symbol (beginning with `-') with no space between
+them.
+
+`\s' stands for space in strings, too, but it is not really meant for
+strings; it is easier and nicer just to write a space.
+
+*** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex.
+
+For instance, you can use "\u0428" to specify a string consisting of
+CYRILLIC CAPITAL LETTER SHA, or `"U0001D6E2" to specify one consisting
+of MATHEMATICAL ITALIC CAPITAL ALPHA (the latter is greater than
+#xFFFF and thus needs the longer syntax).
+
+This syntax works for both character constants and strings.
+
+*** New function `unsafep' determines whether a Lisp form is safe.
+
+It returns nil if the given Lisp form can't possibly do anything
+dangerous; otherwise it returns a reason why the form might be unsafe
+(calls unknown function, alters global variable, etc.).
*** The function `eql' is now available without requiring the CL package.
*** The new function `memql' is like `memq', but uses `eql' for comparison,
that is, floats are compared by value and other elements with `eq'.
+*** New functions `string-or-null-p' and `booleanp'.
+
+`string-or-null-p' returns non-nil iff OBJECT is a string or nil.
+`booleanp' returns non-nil iff OBJECT is t or nil.
+
*** `makehash' is now obsolete. Use `make-hash-table' instead.
+*** Minor change in the function `format'.
+
+Some flags that were accepted but not implemented (such as "*") are no
+longer accepted.
+
*** `add-to-list' takes an optional third argument, APPEND.
If APPEND is non-nil, the new element gets added at the end of the
*** New function `add-to-ordered-list' is like `add-to-list' but
associates a numeric ordering of each element added to the list.
+*** New function `add-to-history' adds an element to a history list.
+
+Lisp packages should use this function to add elements to their
+history lists.
+
+If `history-delete-duplicates' is non-nil, it removes duplicates of
+the new element from the history list it updates.
+
*** New function `copy-tree' makes a copy of a tree.
It recursively copies through both CARs and CDRs.
occurrences of an element in the list, the one that's kept is the
first one.
-*** New function `add-to-history' adds an element to a history list.
-
-Lisp packages should use this function to add elements to their
-history lists.
-
-If `history-delete-duplicates' is non-nil, it removes duplicates of
-the new element from the history list it updates.
-
*** New function `rassq-delete-all'.
(rassq-delete-all VALUE ALIST) deletes, from ALIST, each element whose
CDR is `eq' to the specified value.
-*** The function `number-sequence' makes a list of equally-separated numbers.
-
-For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). By
-default, the separation is 1, but you can specify a different
-separation as the third argument. (number-sequence 1.5 6 2) returns
-(1.5 3.5 5.5).
-
-*** New variables `most-positive-fixnum' and `most-negative-fixnum'.
-
-They hold the largest and smallest possible integer values.
-
-*** Minor change in the function `format'.
-
-Some flags that were accepted but not implemented (such as "*") are no
-longer accepted.
-
*** Functions `get' and `plist-get' no longer give errors for bad plists.
They return nil for a malformed property list or if the list is
They are like `plist-get' and `plist-put', except that they compare
the property name using `equal' rather than `eq'.
-*** New variable `print-continuous-numbering'.
+*** The function `number-sequence' makes a list of equally-separated numbers.
-When this is non-nil, successive calls to print functions use a single
-numbering scheme for circular structure references. This is only
-relevant when `print-circle' is non-nil.
+For instance, (number-sequence 4 9) returns (4 5 6 7 8 9). By
+default, the separation is 1, but you can specify a different
+separation as the third argument. (number-sequence 1.5 6 2) returns
+(1.5 3.5 5.5).
-When you bind `print-continuous-numbering' to t, you should
-also bind `print-number-table' to nil.
+*** New variables `most-positive-fixnum' and `most-negative-fixnum'.
-*** New function `macroexpand-all' expands all macros in a form.
+They hold the largest and smallest possible integer values.
-It is similar to the Common-Lisp function of the same name.
-One difference is that it guarantees to return the original argument
-if no expansion is done, which can be tested using `eq'.
+*** The function `expt' handles negative exponents differently.
+The value for `(expt A B)', if both A and B are integers and B is
+negative, is now a float. For example: (expt 2 -2) => 0.25.
*** The function `atan' now accepts an optional second argument.
angle in radians between the vector [X, Y] and the X axis. (This is
equivalent to the standard C library function `atan2'.)
-*** A function or macro's doc string can now specify the calling pattern.
+*** New macro `with-case-table'
-You put this info in the doc string's last line. It should be
-formatted so as to match the regexp "\n\n(fn .*)\\'". If you don't
-specify this explicitly, Emacs determines it from the actual argument
-names. Usually that default is right, but not always.
+This executes the body with the case table temporarily set to a given
+case table.
*** New macro `with-local-quit' temporarily allows quitting.
the code that has inhibited quitting exits.
This is for use around potentially blocking or long-running code
-inside timer functions and `post-command-hook' functions.
-
-*** New macro `define-obsolete-function-alias'.
-
-This combines `defalias' and `make-obsolete'.
-
-*** New macro `with-case-table'
-
-This executes the body with the case table temporarily set to a given
-case table.
+inside timer functions and `post-command-hook' functions.
-*** New function `unsafep' determines whether a Lisp form is safe.
+*** New macro `define-obsolete-function-alias'.
-It returns nil if the given Lisp form can't possibly do anything
-dangerous; otherwise it returns a reason why the form might be unsafe
-(calls unknown function, alters global variable, etc.).
+This combines `defalias' and `make-obsolete'.
*** New macro `eval-at-startup' specifies expressions to
evaluate when Emacs starts up. If this is done after startup,
This is useful in packages that can be preloaded.
-*** `list-faces-display' takes an optional argument, REGEXP.
+*** New function `macroexpand-all' expands all macros in a form.
-If it is non-nil, the function lists only faces matching this regexp.
+It is similar to the Common-Lisp function of the same name.
+One difference is that it guarantees to return the original argument
+if no expansion is done, which can be tested using `eq'.
-*** New functions `string-or-null-p' and `booleanp'.
+*** A function or macro's doc string can now specify the calling pattern.
-`string-or-null-p' returns non-nil iff OBJECT is a string or nil.
-`booleanp' returns non-nil iff OBJECT is t or nil.
+You put this info in the doc string's last line. It should be
+formatted so as to match the regexp "\n\n(fn .*)\\'". If you don't
+specify this explicitly, Emacs determines it from the actual argument
+names. Usually that default is right, but not always.
+
+*** New variable `print-continuous-numbering'.
+
+When this is non-nil, successive calls to print functions use a single
+numbering scheme for circular structure references. This is only
+relevant when `print-circle' is non-nil.
+
+When you bind `print-continuous-numbering' to t, you should
+also bind `print-number-table' to nil.
+
+*** `list-faces-display' takes an optional argument, REGEXP.
+
+If it is non-nil, the function lists only faces matching this regexp.
*** New hook `command-error-function'.
DOCSTRING, if present, is the documentation for ALIAS-VAR; else it has
the same documentation as BASE-VAR.
+*** The macro `define-obsolete-variable-alias' combines `defvaralias' and
+`make-obsolete-variable'.
+
*** New function: indirect-variable VARIABLE
This function returns the variable at the end of the chain of aliases
It might be noteworthy that variables aliases work for all kinds of
variables, including buffer-local and frame-local variables.
-*** The macro `define-obsolete-variable-alias' combines `defvaralias' and
-`make-obsolete-variable'.
-
** defcustom changes:
*** The package-version keyword has been added to provide
** String changes:
-*** The escape sequence \s is now interpreted as a SPACE character.
-
-Exception: In a character constant, if it is followed by a `-' in a
-character constant (e.g. ?\s-A), it is still interpreted as the super
-modifier. In strings, \s is always interpreted as a space.
-
*** A hex escape in a string constant forces the string to be multibyte.
*** An octal escape in a string constant forces the string to be unibyte.
+*** New function `string-to-multibyte' converts a unibyte string to a
+multibyte string with the same individual character codes.
+
*** `split-string' now includes null substrings in the returned list if
the optional argument SEPARATORS is non-nil and there are matches for
SEPARATORS at the beginning or end of the string. If SEPARATORS is
nil, or if the new optional third argument OMIT-NULLS is non-nil, all
empty matches are omitted from the returned list.
-*** New function `string-to-multibyte' converts a unibyte string to a
-multibyte string with the same individual character codes.
-
-*** New function `substring-no-properties' returns a substring without
-text properties.
-
*** The new function `assoc-string' replaces `assoc-ignore-case' and
`assoc-ignore-representation', which are still available, but have
been declared obsolete.
-*** New syntax: \uXXXX and \UXXXXXXXX specify Unicode code points in hex.
-Use "\u0428" to specify a string consisting of CYRILLIC CAPITAL LETTER SHA,
-or "\U0001D6E2" to specify one consisting of MATHEMATICAL ITALIC CAPITAL
-ALPHA (the latter is greater than #xFFFF and thus needs the longer
-syntax). Also available for characters.
+*** New function `substring-no-properties' returns a substring without
+text properties.
** Displaying warnings to the user.
It defaults to 1.
-*** New function `mouse-on-link-p' tests if a position is in a clickable link.
+*** `field-beginning' and `field-end' take new optional argument, LIMIT.
-This is the function used by the new `mouse-1-click-follows-link'
-functionality.
+This argument tells them not to search beyond LIMIT. Instead they
+give up and return LIMIT.
+
+*** New function `window-line-height' is an efficient way to get
+information about a specific text line in a window provided that the
+window's display is up-to-date.
*** New function `line-number-at-pos' returns the line number of a position.
It an optional buffer position argument that defaults to point.
-*** `field-beginning' and `field-end' take new optional argument, LIMIT.
-
-This argument tells them not to search beyond LIMIT. Instead they
-give up and return LIMIT.
-
*** Function `pos-visible-in-window-p' now returns the pixel coordinates
and partial visibility state of the corresponding row, if the PARTIALLY
arg is non-nil.
-*** New function `window-line-height' is an efficient way to get
-information about a specific text line in a window provided that the
-window's display is up-to-date.
-
*** New functions `posn-at-point' and `posn-at-x-y' return
click-event-style position information for a given visible buffer
position or for a given window pixel coordinate.
+*** New function `mouse-on-link-p' tests if a position is in a clickable link.
+
+This is the function used by the new `mouse-1-click-follows-link'
+functionality.
+
** Text modification:
*** The new function `buffer-chars-modified-tick' returns a buffer's
** Buffer-related changes:
+*** The new function `buffer-local-value' returns the buffer-local
+binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not
+have a buffer-local binding in buffer BUFFER, it returns the default
+value of VARIABLE instead.
+
*** `list-buffers-noselect' now takes an additional argument, BUFFER-LIST.
If it is non-nil, it specifies which buffers to list.
*** `kill-buffer-hook' is now a permanent local.
-*** The new function `buffer-local-value' returns the buffer-local
-binding of VARIABLE (a symbol) in buffer BUFFER. If VARIABLE does not
-have a buffer-local binding in buffer BUFFER, it returns the default
-value of VARIABLE instead.
-
*** The function `frame-or-buffer-changed-p' now lets you maintain
various status records in parallel.
non-empty sequence of either word or symbol constituent characters, as
specified by the syntax table.
-*** rx.el has new corresponding `symbol-start' and `symbol-end' elements.
-
*** `skip-chars-forward' and `skip-chars-backward' now handle
character classes such as `[:alpha:]', along with individual
characters and ranges.
argument `reseat'. When non-nil, all markers in the match data list
passed to these functions will be reseated to point to nowhere.
+*** rx.el has new corresponding `symbol-start' and `symbol-end' elements.
+
*** The default value of `sentence-end' is now defined using the new
variable `sentence-end-without-space', which contains such characters
that end a sentence without following spaces.
`undo-outer-limit', garbage collection empties it. This is to prevent
it from using up the available memory and choking Emacs.
-** New `yank-handler' text property can be used to control how
+** Killing and yanking changes:
+
+*** New `yank-handler' text property can be used to control how
previously killed text on the kill ring is reinserted.
The value of the `yank-handler' property must be a list with one to four
** Syntax table changes:
-*** The macro `with-syntax-table' no longer copies the syntax table.
+*** The new function `syntax-ppss' provides an efficient way to find the
+current syntactic context at point.
*** The new function `syntax-after' returns the syntax code
of the character after a specified buffer position, taking account
*** `syntax-class' extracts the class of a syntax code (as returned
by `syntax-after').
-*** The new function `syntax-ppss' provides an efficient way to find the
-current syntactic context at point.
+*** The macro `with-syntax-table' no longer copies the syntax table.
** File operation changes:
*** New vars `exec-suffixes' and `load-suffixes' used when
searching for an executable or an Emacs Lisp file.
-*** The new primitive `set-file-times' sets a file's access and
-modification times. Magic file name handlers can handle this
-operation.
+*** New function `locate-file' searches for a file in a list of directories.
+`locate-file' accepts a name of a file to search (a string), and two
+lists: a list of directories to search in and a list of suffixes to
+try; typical usage might use `exec-path' and `load-path' for the list
+of directories, and `exec-suffixes' and `load-suffixes' for the list
+of suffixes. The function also accepts a predicate argument to
+further filter candidate files.
+
+One advantage of using this function is that the list of suffixes in
+`exec-suffixes' is OS-dependant, so this function will find
+executables without polluting Lisp code with OS dependencies.
*** The new function `file-remote-p' tests a file name and returns
non-nil if it specifies a remote file (one that Emacs accesses using
its own special methods and not directly through the file system).
The value in that case is an identifier for the remote file system.
-*** `buffer-auto-save-file-format' is the new name for what was
-formerly called `auto-save-file-format'. It is now a permanent local.
-
-*** Functions `file-name-sans-extension' and `file-name-extension' now
-ignore the leading dots in file names, so that file names such as
-`.emacs' are treated as extensionless.
-
-*** `visited-file-modtime' and `calendar-time-from-absolute' now return
-a list of two integers, instead of a cons.
+*** The new hook `before-save-hook' is invoked by `basic-save-buffer'
+before saving buffers. This allows packages to perform various final
+tasks. For example, it can be used by the copyright package to make
+sure saved files have the current year in any copyright headers.
*** `file-chase-links' now takes an optional second argument LIMIT which
specifies the maximum number of links to chase through. If after that
many iterations the file name obtained is still a symbolic link,
`file-chase-links' returns it anyway.
-*** The new hook `before-save-hook' is invoked by `basic-save-buffer'
-before saving buffers. This allows packages to perform various final
-tasks. For example, it can be used by the copyright package to make
-sure saved files have the current year in any copyright headers.
+*** Functions `file-name-sans-extension' and `file-name-extension' now
+ignore the leading dots in file names, so that file names such as
+`.emacs' are treated as extensionless.
*** If `buffer-save-without-query' is non-nil in some buffer,
`save-some-buffers' will always save that buffer without asking (if
it's modified).
-*** New function `locate-file' searches for a file in a list of directories.
-`locate-file' accepts a name of a file to search (a string), and two
-lists: a list of directories to search in and a list of suffixes to
-try; typical usage might use `exec-path' and `load-path' for the list
-of directories, and `exec-suffixes' and `load-suffixes' for the list
-of suffixes. The function also accepts a predicate argument to
-further filter candidate files.
+*** `buffer-auto-save-file-format' is the new name for what was
+formerly called `auto-save-file-format'. It is now a permanent local.
-One advantage of using this function is that the list of suffixes in
-`exec-suffixes' is OS-dependant, so this function will find
-executables without polluting Lisp code with OS dependencies.
+*** `visited-file-modtime' and `calendar-time-from-absolute' now return
+a list of two integers, instead of a cons.
*** The precedence of file name handlers has been changed.
*** The function `file-name-completion' accepts an optional argument
PREDICATE, and rejects completion candidates that don't satisfy PREDICATE.
+*** The new primitive `set-file-times' sets a file's access and
+modification times. Magic file name handlers can handle this
+operation.
+
** Input changes:
+*** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that
+display a prompt but don't use the minibuffer, now display the prompt
+using the text properties (esp. the face) of the prompt string.
+
*** The functions `read-event', `read-char', and `read-char-exclusive'
have a new optional argument SECONDS. If non-nil, this specifies a
maximum time to wait for input, in seconds. If no input arrives after
much like `F', but if the input is a directory name (even defaulted),
it returns just the directory name.
-*** Functions `y-or-n-p', `read-char', `read-key-sequence' and the like, that
-display a prompt but don't use the minibuffer, now display the prompt
-using the text properties (esp. the face) of the prompt string.
-
*** (while-no-input BODY...) runs BODY, but only so long as no input
arrives. If the user types or clicks anything, BODY stops as if a
quit had occurred. `while-no-input' returns the value of BODY, if BODY
from which the minibuffer was entered. The return value of
`lazy-completion-table' must be used to initialize the value of VAR.
-** Enhancements to keymaps.
+** Abbrev changes:
-*** New keymaps for typing file names
+*** `define-abbrev' now accepts an optional argument SYSTEM-FLAG.
-Two new keymaps, `minibuffer-local-filename-completion-map' and
-`minibuffer-local-must-match-filename-map', apply whenever
-Emacs reads a file name in the minibuffer. These key maps override
-the usual binding of SPC to `minibuffer-complete-word' (so that file
-names with embedded spaces could be typed without the need to quote
-the spaces).
+If non-nil, this marks the abbrev as a "system" abbrev, which means
+that it won't be stored in the user's abbrevs file if he saves the
+abbrevs. Major modes that predefine some abbrevs should always
+specify this flag.
+
+*** The new function `copy-abbrev-table' copies an abbrev table.
+
+It returns a new abbrev table that is a copy of a given abbrev table.
+
+** Enhancements to keymaps.
*** Cleaner way to enter key sequences.
command before remapping. It is equal to `this-command' when the
command was not remapped.
+*** The definition of a key-binding passed to define-key can use XEmacs-style
+key-sequences, such as [(control a)].
+
+*** New keymaps for typing file names
+
+Two new keymaps, `minibuffer-local-filename-completion-map' and
+`minibuffer-local-must-match-filename-map', apply whenever
+Emacs reads a file name in the minibuffer. These key maps override
+the usual binding of SPC to `minibuffer-complete-word' (so that file
+names with embedded spaces could be typed without the need to quote
+the spaces).
+
+*** New function `current-active-maps' returns a list of currently
+active keymaps.
+
+*** New function `describe-buffer-bindings' inserts the list of all
+defined keys and their definitions.
+
+*** New function `keymap-prompt' returns the prompt string of a keymap.
+
*** If text has a `keymap' property, that keymap takes precedence
over minor mode keymaps.
position be determined from the key sequence itself, it is also
possible to specify it with an optional argument explicitly.
-*** Dense keymaps now handle inheritance correctly.
-
-Previously a dense keymap would hide all of the simple-char key
-bindings of the parent keymap.
-
*** `define-key-after' now accepts keys longer than 1.
-*** New function `current-active-maps' returns a list of currently
-active keymaps.
-
-*** New function `describe-buffer-bindings' inserts the list of all
-defined keys and their definitions.
-
-*** New function `keymap-prompt' returns the prompt string of a keymap.
-
*** (map-keymap FUNCTION KEYMAP) applies the function to each binding
in the keymap.
keymap alist separate from `minor-mode-map-alist' by adding their
keymap alist to this list.
-*** The definition of a key-binding passed to define-key can use XEmacs-style
-key-sequences, such as [(control a)].
-
-** Abbrev changes:
-
-*** The new function `copy-abbrev-table' copies an abbrev table.
-
-It returns a new abbrev table that is a copy of a given abbrev table.
-
-*** `define-abbrev' now accepts an optional argument SYSTEM-FLAG.
+*** Dense keymaps now handle inheritance correctly.
-If non-nil, this marks the abbrev as a "system" abbrev, which means
-that it won't be stored in the user's abbrevs file if he saves the
-abbrevs. Major modes that predefine some abbrevs should always
-specify this flag.
+Previously a dense keymap would hide all of the simple-char key
+bindings of the parent keymap.
** Enhancements to process support
-*** Function `list-processes' now has an optional argument; if non-nil,
-it lists only the processes whose query-on-exit flag is set.
-
-*** New fns `set-process-query-on-exit-flag' and `process-query-on-exit-flag'.
-
-These replace the old function `process-kill-without-query'. That
-function is still supported, but new code should use the new
-functions.
+*** Adaptive read buffering of subprocess output.
-*** Function `signal-process' now accepts a process object or process
-name in addition to a process id to identify the signaled process.
+On some systems, when Emacs reads the output from a subprocess, the
+output data is read in very small blocks, potentially resulting in
+very poor performance. This behavior can be remedied to some extent
+by setting the new variable `process-adaptive-read-buffering' to a
+non-nil value (the default), as it will automatically delay reading
+from such processes, allowing them to produce more output before
+Emacs tries to read it.
*** Processes now have an associated property list where programs can
maintain process state and other per-process related information.
`process-plist' and `set-process-plist' to access and replace the
entire property list of a process.
-*** Function `accept-process-output' has a new optional fourth arg
-JUST-THIS-ONE. If non-nil, only output from the specified process
-is handled, suspending output from other processes. If value is an
-integer, also inhibit running timers. This feature is generally not
-recommended, but may be necessary for specific applications, such as
-speech synthesis.
+*** Function `list-processes' now has an optional argument; if non-nil,
+it lists only the processes whose query-on-exit flag is set.
-*** Adaptive read buffering of subprocess output.
+*** New fns `set-process-query-on-exit-flag' and `process-query-on-exit-flag'.
-On some systems, when Emacs reads the output from a subprocess, the
-output data is read in very small blocks, potentially resulting in
-very poor performance. This behavior can be remedied to some extent
-by setting the new variable `process-adaptive-read-buffering' to a
-non-nil value (the default), as it will automatically delay reading
-from such processes, allowing them to produce more output before
-Emacs tries to read it.
+These replace the old function `process-kill-without-query'. That
+function is still supported, but new code should use the new
+functions.
*** The new function `call-process-shell-command'.
obeys file handlers. The file handler is chosen based on
`default-directory'.
+*** Function `signal-process' now accepts a process object or process
+name in addition to a process id to identify the signaled process.
+
+*** Function `accept-process-output' has a new optional fourth arg
+JUST-THIS-ONE. If non-nil, only output from the specified process
+is handled, suspending output from other processes. If value is an
+integer, also inhibit running timers. This feature is generally not
+recommended, but may be necessary for specific applications, such as
+speech synthesis.
+
*** A process filter function gets the output as multibyte string
if the process specifies t for its filter's multibyteness.
*** The old `open-network-stream' now uses `make-network-process'.
-*** New functions `process-datagram-address', `set-process-datagram-address'.
-
-These functions are used with datagram-based network processes to get
-and set the current address of the remote partner.
-
-*** New function `format-network-address'.
-
-This function reformats the Lisp representation of a network address
-to a printable string. For example, an IP address A.B.C.D and port
-number P is represented as a five element vector [A B C D P], and the
-printable string returned for this vector is "A.B.C.D:P". See the doc
-string for other formatting options.
-
*** `process-contact' has an optional KEY argument.
Depending on this argument, you can get the complete list of network
stopped state. For a client process, no input is received in the
stopped state.
+*** New function `format-network-address'.
+
+This function reformats the Lisp representation of a network address
+to a printable string. For example, an IP address A.B.C.D and port
+number P is represented as a five element vector [A B C D P], and the
+printable string returned for this vector is "A.B.C.D:P". See the doc
+string for other formatting options.
+
*** New function `network-interface-list'.
This function returns a list of network interface names and their
This function returns the network address, hardware address, current
status, and other information about a specific network interface.
+*** New functions `process-datagram-address', `set-process-datagram-address'.
+
+These functions are used with datagram-based network processes to get
+and set the current address of the remote partner.
+
*** Deleting a network process with `delete-process' calls the sentinel.
The status message passed to the sentinel for a deleted network
** Using window objects:
-*** New function `window-body-height'.
-
-This is like `window-height' but does not count the mode line or the
-header line.
-
*** You can now make a window as short as one line.
A window that is just one line tall does not display either a mode
*** The new functions `window-pixel-edges' and `window-inside-pixel-edges'
return window edges in units of pixels, rather than columns and lines.
+*** New function `window-body-height'.
+
+This is like `window-height' but does not count the mode line or the
+header line.
+
+*** The new function `adjust-window-trailing-edge' moves the right
+or bottom edge of a window. It does not move other window edges.
+
*** The new macro `with-selected-window' temporarily switches the
selected window without impacting the order of `buffer-list'.
It saves and restores the current buffer, too.
argument `dedicated'. If non-nil, those functions do not ignore
dedicated windows.
-*** The new function `adjust-window-trailing-edge' moves the right
-or bottom edge of a window. It does not move other window edges.
-
** Customizable fringe bitmaps
+*** There are new display properties, `left-fringe' and `right-fringe',
+that can be used to show a specific bitmap in the left or right fringe
+bitmap of the display line.
+
+Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a
+symbol identifying a fringe bitmap, either built-in or defined with
+`define-fringe-bitmap', and FACE is an optional face name to be used
+for displaying the bitmap instead of the default `fringe' face.
+When specified, FACE is automatically merged with the `fringe' face.
+
*** New buffer-local variables `fringe-indicator-alist' and
`fringe-cursor-alist' maps between logical (internal) fringe indicator
and cursor symbols and the actual fringe bitmaps to be displayed.
with the `fringe' face, so normally, the face should only specify the
foreground color of the bitmap.
-*** There are new display properties, `left-fringe' and `right-fringe',
-that can be used to show a specific bitmap in the left or right fringe
-bitmap of the display line.
-
-Format is `display (left-fringe BITMAP [FACE])', where BITMAP is a
-symbol identifying a fringe bitmap, either built-in or defined with
-`define-fringe-bitmap', and FACE is an optional face name to be used
-for displaying the bitmap instead of the default `fringe' face.
-When specified, FACE is automatically merged with the `fringe' face.
-
*** New function `fringe-bitmaps-at-pos' returns the current fringe
bitmaps in the display line at a given buffer position.
** Mouse event enhancements:
-*** Mouse events for clicks on window fringes now specify `left-fringe'
-or `right-fringe' as the area.
-
*** All mouse events now include a buffer position regardless of where
you clicked. For mouse clicks in window margins and fringes, this is
a sensible buffer position corresponding to the surrounding text.
-*** `posn-point' now returns buffer position for non-text area events.
-
-*** Function `mouse-set-point' now works for events outside text area.
-
-*** New function `posn-area' returns window area clicked on (nil means
-text area).
+*** Mouse events for clicks on window fringes now specify `left-fringe'
+or `right-fringe' as the area.
*** Mouse events include actual glyph column and row for all event types
and all areas.
-*** New function `posn-actual-col-row' returns the actual glyph coordinates
-of the mouse event position.
-
*** Mouse events can now indicate an image object clicked on.
*** Mouse events include relative X and Y pixel coordinates relative to
*** Mouse events include the pixel width and height of the object
(image or character) clicked on.
+*** Function `mouse-set-point' now works for events outside text area.
+
+*** `posn-point' now returns buffer position for non-text area events.
+
+*** New function `posn-area' returns window area clicked on (nil means
+text area).
+
+*** New function `posn-actual-col-row' returns the actual glyph coordinates
+of the mouse event position.
+
*** New functions 'posn-object', 'posn-object-x-y', 'posn-object-width-height'.
These return the image or string object of a mouse click, the X and Y
defaults that apply to all the subsequent cases (and can be overridden
by them).
-*** The variable `face-font-rescale-alist' specifies how much larger
-(or smaller) font we should use. For instance, if the value is
-'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
-point, we actually use a font of 13 point if the font matches
-SOME-FONTNAME-PATTERN.
-
*** The function `face-differs-from-default-p' now truly checks
whether the given face displays differently from the default face or
not (previously it did only a very cursory check).
so that :inherit face lists operate identically to face lists in text
`face' properties.
+*** The variable `face-font-rescale-alist' specifies how much larger
+(or smaller) font we should use. For instance, if the value is
+'((SOME-FONTNAME-PATTERN . 1.3)) and a face requests a font of 10
+point, we actually use a font of 13 point if the font matches
+SOME-FONTNAME-PATTERN.
+
*** On terminals, faces with the :inverse-video attribute are displayed
with swapped foreground and background colors even when one of them is
not specified. In previous releases of Emacs, if either foreground
** Major mode mechanism changes:
-*** If new variable `auto-mode-case-fold' is set to a non-nil value,
-Emacs will perform a second case-insensitive search through
-`auto-mode-alist' if the first case-sensitive search fails. This
-means that a file FILE.TXT is opened in text-mode, and a file
-PROG.HTML is opened in html-mode. Note however, that independent of
-this setting, *.C files are usually recognized as C++ files. It also
-has no effect on systems with case-insensitive file names.
-
*** New variable `magic-mode-alist' determines major mode for a file by
looking at the file contents. It takes precedence over `auto-mode-alist'.
-*** An interpreter magic line (if present) takes precedence over the
-file name when setting the major mode.
+*** New variable `magic-fallback-mode-alist' determines major mode for a file by
+looking at the file contents. It is handled after `auto-mode-alist',
+only if `auto-mode-alist' (and `magic-mode-alist') says nothing about the file.
*** XML or SGML major mode is selected when file starts with an `<?xml'
or `<!DOCTYPE' declaration.
-*** Use the new function `run-mode-hooks' to run the major mode's mode hook.
+*** An interpreter magic line (if present) takes precedence over the
+file name when setting the major mode.
+
+*** If new variable `auto-mode-case-fold' is set to a non-nil value,
+Emacs will perform a second case-insensitive search through
+`auto-mode-alist' if the first case-sensitive search fails. This
+means that a file FILE.TXT is opened in text-mode, and a file
+PROG.HTML is opened in html-mode. Note however, that independent of
+this setting, *.C files are usually recognized as C++ files. It also
+has no effect on systems with case-insensitive file names.
*** All major mode functions should now run the new normal hook
`after-change-major-mode-hook', at their very end, after the mode
hooks. `run-mode-hooks' does this automatically.
-*** If a major mode function has a non-nil `no-clone-indirect'
-property, `clone-indirect-buffer' signals an error if you use
-it in that buffer.
-
*** Major modes can define `eldoc-documentation-function'
locally to provide Eldoc functionality by some method appropriate to
the language.
-*** `define-derived-mode' by default creates a new empty abbrev table.
-It does not copy abbrevs from the parent mode's abbrev table.
+*** Use the new function `run-mode-hooks' to run the major mode's mode hook.
*** The new function `run-mode-hooks' and the new macro `delay-mode-hooks'
are used by `define-derived-mode' to make sure the mode hook for the
parent mode is run at the end of the child mode.
+*** `define-derived-mode' by default creates a new empty abbrev table.
+It does not copy abbrevs from the parent mode's abbrev table.
+
+*** If a major mode function has a non-nil `no-clone-indirect'
+property, `clone-indirect-buffer' signals an error if you use
+it in that buffer.
+
** Minor mode changes:
*** `define-minor-mode' now accepts arbitrary additional keyword arguments
and simply passes them to `defcustom', if applicable.
-*** `minor-mode-list' now holds a list of minor mode commands.
-
*** `define-globalized-minor-mode'.
This is a new name for what was formerly called
`easy-mmode-define-global-mode'. The old name remains as an alias.
+*** `minor-mode-list' now holds a list of minor mode commands.
+
** Command loop changes:
*** The new function `called-interactively-p' does what many people
*** When using non-toolkit scroll bars with the default width,
the `scroll-bar-width' frame parameter value is nil.
+** Mode line changes:
+
+*** New function `format-mode-line'.
+
+This returns the mode line or header line of the selected (or a
+specified) window as a string with or without text properties.
+
+*** The new mode-line construct `(:propertize ELT PROPS...)' can be
+used to add text properties to mode-line elements.
+
+*** The new `%i' and `%I' constructs for `mode-line-format' can be used
+to display the size of the accessible part of the buffer on the mode
+line.
+
+*** Mouse-face on mode-line (and header-line) is now supported.
+
+** Menu manipulation changes:
+
+*** To manipulate the File menu using easy-menu, you must specify the
+proper name "file". In previous Emacs versions, you had to specify
+"files", even though the menu item itself was changed to say "File"
+several versions ago.
+
+*** The dummy function keys made by easy-menu are now always lower case.
+If you specify the menu item name "Ada", for instance, it uses `ada'
+as the "key" bound by that key binding.
+
+This is relevant only if Lisp code looks for the bindings that were
+made with easy-menu.
+
+*** `easy-menu-define' now allows you to use nil for the symbol name
+if you don't need to give the menu a name. If you install the menu
+into other keymaps right away (MAPS is non-nil), it usually doesn't
+need to have a name.
+
** Mule changes:
*** Already true in Emacs 21.1, but not emphasized clearly enough:
3. For binary files where format conversion would be pointless and
wasteful.
-*** `set-buffer-file-coding-system' now takes an additional argument,
-NOMODIFY. If it is non-nil, it means don't mark the buffer modified.
-
*** The new variable `auto-coding-functions' lets you specify functions
to examine a file being visited and deduce the proper coding system
for it. (If the coding system is detected incorrectly for a specific
*** New function `quail-find-key' returns a list of keys to type in the
current input method to input a character.
-** Mode line changes:
-
-*** New function `format-mode-line'.
-
-This returns the mode line or header line of the selected (or a
-specified) window as a string with or without text properties.
-
-*** The new mode-line construct `(:propertize ELT PROPS...)' can be
-used to add text properties to mode-line elements.
-
-*** The new `%i' and `%I' constructs for `mode-line-format' can be used
-to display the size of the accessible part of the buffer on the mode
-line.
-
-*** Mouse-face on mode-line (and header-line) is now supported.
-
-** Menu manipulation changes:
-
-*** To manipulate the File menu using easy-menu, you must specify the
-proper name "file". In previous Emacs versions, you had to specify
-"files", even though the menu item itself was changed to say "File"
-several versions ago.
-
-*** The dummy function keys made by easy-menu are now always lower case.
-If you specify the menu item name "Ada", for instance, it uses `ada'
-as the "key" bound by that key binding.
-
-This is relevant only if Lisp code looks for the bindings that were
-made with easy-menu.
-
-*** `easy-menu-define' now allows you to use nil for the symbol name
-if you don't need to give the menu a name. If you install the menu
-into other keymaps right away (MAPS is non-nil), it usually doesn't
-need to have a name.
+*** `set-buffer-file-coding-system' now takes an additional argument,
+NOMODIFY. If it is non-nil, it means don't mark the buffer modified.
** Operating system access:
*** New function `redirect-debugging-output' can be used to redirect
debugging output on the stderr file handle to a file.
+** GC changes:
+
+*** New variable `gc-cons-percentage' automatically grows the GC cons threshold
+as the heap size increases.
+
+*** New variables `gc-elapsed' and `gcs-done' provide extra information
+on garbage collection.
+
+*** The normal hook `post-gc-hook' is run at the end of garbage collection.
+
+The hook is run with GC inhibited, so use it with care.
+
** Miscellaneous:
*** A number of hooks have been renamed to better follow the conventions:
*** New function `x-send-client-message' sends a client message when
running under X.
-
-** GC changes:
-
-*** New variable `gc-cons-percentage' automatically grows the GC cons threshold
-as the heap size increases.
-
-*** New variables `gc-elapsed' and `gcs-done' provide extra information
-on garbage collection.
-
-*** The normal hook `post-gc-hook' is run at the end of garbage collection.
-
-The hook is run with GC inhibited, so use it with care.
\f
* New Packages for Lisp Programming in Emacs 22.1
}
return ret;
+** Emacs crashes on startup after a glibc upgrade.
+
+This is caused by a binary incompatible change to the malloc
+implementation in glibc 2.5.90-22. As a result, Emacs binaries built
+using prior versions of glibc crash when run under 2.5.90-22.
+
+This problem was first seen in pre-release versions of Fedora 7, and
+may be fixed in the final Fedora 7 release. To stop the crash from
+happening, first try upgrading to the newest version of glibc; if this
+does not work, rebuild Emacs with the same version of glibc that you
+will run it under. For details, see
+
+https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=239344
+
* Crash bugs
** Emacs crashes in x-popup-dialog.
of Windows. This is caused by a deficiency in the underlying system
library function.
+Files larger than 4GB cause overflow in the size (represented as a
+32-bit integer) reported by `file-attributes'. This affects Dired as
+well, since the Windows port uses a Lisp emulation of `ls' that relies
+on `file-attributes'.
+
** Typing Alt-Shift has strange effects on MS-Windows.
This combination of keys is a command to change keyboard layout. If
the file, and then reconfigure and rebuild Emacs. The dumping process
should now succeed.
+*** OpenBSD 4.0 macppc: Segfault during dumping.
+
+The build aborts with signal 11 when the command `./temacs --batch
+--load loadup bootstrap' tries to load files.el. A workaround seems
+to be to reduce the level of compiler optimization used during the
+build (from -O2 to -O1). It is possible this is an OpenBSD
+GCC problem specific to the macppc architecture, possibly only
+occurring with older versions of GCC (e.g. 3.3.5).
+
** Installation
*** Installing Emacs gets an error running `install-info'.
Using directory paths with spaces is not supported at this time: you
must re-configure without using spaces.
+*** Installing to a directory with non-ASCII characters in the name fails.
+
+Installation may fail, or the Emacs executable may not start
+correctly, if a directory name containing non-ASCII characters is used
+as a `configure' argument (e.g. `--prefix'). The problem can also
+occur if a non-ASCII directory is specified in the EMACSLOADPATH
+envvar.
+
+*** On Solaris, use GNU Make when installing an out-of-tree build
+
+The Emacs configuration process allows you to configure the
+build environment so that you can build emacs in a directory
+outside of the distribution tree. When installing Emacs from an
+out-of-tree build directory on Solaris, you may need to use GNU
+make. The make programs bundled with Solaris support the VPATH
+macro but use it differently from the way the VPATH macro is
+used by GNU make. The differences will cause the "make install"
+step to fail, leaving you with an incomplete emacs
+installation. GNU make is available in /usr/sfw/bin on Solaris
+10 and can be installed as /opt/sfw/bin/gmake from the Solaris 9
+Software Companion CDROM.
+
+The problems due to the VPATH processing differences affect only
+out of tree builds so, if you are on a Solaris installation
+without GNU make, you can install Emacs completely by installing
+from a build environment using the original emacs distribution tree.
+
** First execution
*** Emacs binary is not in executable format, and cannot be run.
the definition of `file-attributes' and `directory-files-and-attributes'
and from the calls.
+** Modify the emulation of `stat' for MS-Windows to support large files.
+ The current version uses the stock Windows definition of `struct
+ stat', where the file's size is returned as a 32-bit integer. That
+ overflows for files larger than 4GB. To fix, modify `stat' to use
+ 64-bit size, and use a declaration of `struct stat' that supports
+ such sizes.
+
** Make language-info-alist customizable. Currently a user can customize
only the variable `current-language-environment'.
.TP 8
.BI \-batch
Edit in batch mode. The editor will send messages to stderr. This
-option must be the first in the argument list. You must use -l and -f
+option must be the first in the argument list. You must use \-l and \-f
options to specify files to execute and functions to call.
.TP
.B \-kill
T}
.\" START DELETING HERE IF YOU'RE NOT USING X MENUS
CTRL-SHIFT-left T{
-X buffer menu--hold the buttons and keys
+X buffer menu \(em hold the buttons and keys
down, wait for menu to appear, select
buffer, and release. Move mouse out of
menu and release to cancel.
T}
-CTRL-SHIFT-middle X help menu--pop up index card menu for Emacs help.
+CTRL-SHIFT-middle X help menu \(em pop up index card menu for Emacs help.
.\" STOP DELETING HERE IF YOU'RE NOT USING X MENUS
CTRL-SHIFT-right T{
Select window with mouse, and delete all
--- /dev/null
+"""Definitions used by commands sent to inferior Python in python.el."""
+
+# Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+# Author: Dave Love <fx@gnu.org>
+
+# This file is part of GNU Emacs.
+
+# GNU Emacs is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+
+# GNU Emacs is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with GNU Emacs; see the file COPYING. If not, write to the
+# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+import os, sys, traceback, inspect, __main__
+from sets import Set
+
+__all__ = ["eexecfile", "eargs", "complete", "ehelp", "eimport", "modpath"]
+
+def format_exception (filename, should_remove_self):
+ type, value, tb = sys.exc_info ()
+ sys.last_type = type
+ sys.last_value = value
+ sys.last_traceback = tb
+ if type is SyntaxError:
+ try: # parse the error message
+ msg, (dummy_filename, lineno, offset, line) = value
+ except:
+ pass # Not the format we expect; leave it alone
+ else:
+ # Stuff in the right filename
+ value = SyntaxError(msg, (filename, lineno, offset, line))
+ sys.last_value = value
+ res = traceback.format_exception_only (type, value)
+ # There are some compilation errors which do not provide traceback so we
+ # should not massage it.
+ if should_remove_self:
+ tblist = traceback.extract_tb (tb)
+ del tblist[:1]
+ res = traceback.format_list (tblist)
+ if res:
+ res.insert(0, "Traceback (most recent call last):\n")
+ res[len(res):] = traceback.format_exception_only (type, value)
+ # traceback.print_exception(type, value, tb)
+ for line in res: print line,
+
+def eexecfile (file):
+ """Execute FILE and then remove it.
+ Execute the file within the __main__ namespace.
+ If we get an exception, print a traceback with the top frame
+ (ourselves) excluded."""
+ # We cannot use real execfile since it has a bug where the file stays
+ # locked forever (under w32) if SyntaxError occurs.
+ # --- code based on code.py and PyShell.py.
+ try:
+ try:
+ source = open (file, "r").read()
+ code = compile (source, file, "exec")
+ # Other exceptions (shouldn't be any...) will (correctly) fall
+ # through to "final".
+ except (OverflowError, SyntaxError, ValueError):
+ # FIXME: When can compile() raise anything else than
+ # SyntaxError ????
+ format_exception (file, False)
+ return
+ try:
+ exec code in __main__.__dict__
+ except:
+ format_exception (file, True)
+ finally:
+ os.remove (file)
+
+def eargs (name, imports):
+ "Get arglist of NAME for Eldoc &c."
+ try:
+ if imports: exec imports
+ parts = name.split ('.')
+ if len (parts) > 1:
+ exec 'import ' + parts[0] # might fail
+ func = eval (name)
+ if inspect.isbuiltin (func) or type(func) is type:
+ doc = func.__doc__
+ if doc.find (' ->') != -1:
+ print '_emacs_out', doc.split (' ->')[0]
+ else:
+ print '_emacs_out', doc.split ('\n')[0]
+ return
+ if inspect.ismethod (func):
+ func = func.im_func
+ if not inspect.isfunction (func):
+ print '_emacs_out '
+ return
+ (args, varargs, varkw, defaults) = inspect.getargspec (func)
+ # No space between name and arglist for consistency with builtins.
+ print '_emacs_out', \
+ func.__name__ + inspect.formatargspec (args, varargs, varkw,
+ defaults)
+ except:
+ print "_emacs_out "
+
+def all_names (object):
+ """Return (an approximation to) a list of all possible attribute
+ names reachable via the attributes of OBJECT, i.e. roughly the
+ leaves of the dictionary tree under it."""
+
+ def do_object (object, names):
+ if inspect.ismodule (object):
+ do_module (object, names)
+ elif inspect.isclass (object):
+ do_class (object, names)
+ # Might have an object without its class in scope.
+ elif hasattr (object, '__class__'):
+ names.add ('__class__')
+ do_class (object.__class__, names)
+ # Probably not a good idea to try to enumerate arbitrary
+ # dictionaries...
+ return names
+
+ def do_module (module, names):
+ if hasattr (module, '__all__'): # limited export list
+ names.union_update (module.__all__)
+ for i in module.__all__:
+ do_object (getattr (module, i), names)
+ else: # use all names
+ names.union_update (dir (module))
+ for i in dir (module):
+ do_object (getattr (module, i), names)
+ return names
+
+ def do_class (object, names):
+ ns = dir (object)
+ names.union_update (ns)
+ if hasattr (object, '__bases__'): # superclasses
+ for i in object.__bases__: do_object (i, names)
+ return names
+
+ return do_object (object, Set ([]))
+
+def complete (name, imports):
+ """Complete TEXT in NAMESPACE and print a Lisp list of completions.
+ Exec IMPORTS first."""
+ import __main__, keyword
+
+ def class_members(object):
+ names = dir (object)
+ if hasattr (object, '__bases__'):
+ for super in object.__bases__:
+ names = class_members (super)
+ return names
+
+ names = Set ([])
+ base = None
+ try:
+ dict = __main__.__dict__.copy()
+ if imports: exec imports in dict
+ l = len (name)
+ if not "." in name:
+ for list in [dir (__builtins__), keyword.kwlist, dict.keys()]:
+ for elt in list:
+ if elt[:l] == name: names.add(elt)
+ else:
+ base = name[:name.rfind ('.')]
+ name = name[name.rfind('.')+1:]
+ try:
+ object = eval (base, dict)
+ names = Set (dir (object))
+ if hasattr (object, '__class__'):
+ names.add('__class__')
+ names.union_update (class_members (object))
+ except: names = all_names (dict)
+ except: return []
+ l = len(name)
+ print '_emacs_out (',
+ for n in names:
+ if name == n[:l]:
+ if base: print '"%s.%s"' % (base, n),
+ else: print '"%s"' % n,
+ print ')'
+
+def ehelp (name, imports):
+ """Get help on string NAME.
+ First try to eval name for, e.g. user definitions where we need
+ the object. Otherwise try the string form."""
+ locls = {}
+ if imports:
+ try: exec imports in locls
+ except: pass
+ try: help (eval (name, globals(), locls))
+ except: help (name)
+
+def eimport (mod, dir):
+ """Import module MOD with directory DIR at the head of the search path.
+ NB doesn't load from DIR if MOD shadows a system module."""
+ from __main__ import __dict__
+
+ path0 = sys.path[0]
+ sys.path[0] = dir
+ try:
+ try:
+ if __dict__.has_key(mod) and inspect.ismodule (__dict__[mod]):
+ reload (__dict__[mod])
+ else:
+ __dict__[mod] = __import__ (mod)
+ except:
+ (type, value, tb) = sys.exc_info ()
+ print "Traceback (most recent call last):"
+ traceback.print_exception (type, value, tb.tb_next)
+ finally:
+ sys.path[0] = path0
+
+def modpath (module):
+ """Return the source file for the given MODULE (or None).
+Assumes that MODULE.py and MODULE.pyc are in the same directory."""
+ try:
+ path = __import__ (module).__file__
+ if path[-4:] == '.pyc' and os.path.exists (path[0:-1]):
+ path = path[:-1]
+ print "_emacs_out", path
+ except:
+ print "_emacs_out ()"
+
+# print '_emacs_ok' # ready for input and can call continuation
+
+# arch-tag: d90408f3-90e2-4de4-99c2-6eb9c7b9ca46
.br
A regexp can be preceded by {\fIlang\fP}, thus restricting it to match
-lines of files of the specified language. Use \fBetags --help\fP to obtain
+lines of files of the specified language. Use \fBetags \-\-help\fP to obtain
a list of the recognised languages. This feature is particularly useful inside
\fBregex files\fP. A regex file contains one regex per line. Empty lines,
and those lines beginning with space or tab are ignored. Lines beginning
%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.95a Copyright 2005 Radical Eye Software
+%%Creator: dvips(k) 5.95b Copyright 2005 Radical Eye Software
%%Title: fr-refcard.dvi
-%%Pages: 3
+%%Pages: 2
%%PageOrder: Ascend
%%Orientation: Landscape
%%BoundingBox: 0 0 595 842
%%DocumentPaperSizes: a4
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -t a4 -t landscape fr-refcard.dvi
+%DVIPSCommandLine: dvips -t a4 -t landscape fr-refcard.dvi -o
+%+ fr-refcard.ps
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2007.03.22:0018
+%DVIPSSource: TeX output 2007.05.15:0316
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
dup 101 /e put
dup 103 /g put
dup 105 /i put
+dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
-E8929A4BB6D48613A88F926E0EB1BE5F6E29CA5350841244E1718987727B7245
-E7DDE2528073015C64AEE3BF18734A0C48AFF16A354C14E1A6D9D5DC96C06E02
-3A1FE4AF93E8349C3293F62C3466B67D25A9533C6DAA4514EA201B79042CB220
-43B3B60E13200B4F47011F95BA2EF1D6548218DCDBC1B00CCAE375F91EB60E32
-9F1198D74BC3768101AB5F2E7BDEA9FE5C1379341C604D835B50B671793DD7EF
-605F60048FC9761FE50647C15C2424EABDC9AF4257F915282EFF1CF447EA3F0B
-EE81FB67B04703215DB6AB3E47B7EE06435234C834DF84A3E0F99D753D596305
-85DD514BA3C5ACCD8BF6BC804AEA170A32B2080B694CF7FE994228ECCAD86C4B
-CB8B963E84D46ED86B2D43DADB277A79DD100777CB0F2022C8AC9DA77D500C73
-D6E15540121B6D82457096083526C7E2697F776239E02C3E64D25AFBFB58474E
-E82672F2FBEA78ED5DCA1BB4FCD627BAAB6AB50232EDBE99D6CC51A287F80DCF
-14CC7DE3DCFF47A1DFA130CF7F502193C6C00B1A7A1515FF7374351238158B97
-AA26F0F2773E81CD03F4A398BEFBDCB450F0FA6450FD48B5A69E37B036BE5F85
-0F0B1AAAB2CF3098AEF32B0902398A6A9E1DB5A0C42DD39E3208C4F8BBEC0A98
-35FC84FF5EB2293644F7E6EF28FAF5F6E5205029CCFF7342BC276958EFFD7817
-5D9F367C6FF151B12353BE9DDCF75196F2C8C8C889BB097A3D9D8FF5D77A7184
-D9F3EAC4493E94DC73886AFD7652ADBF562189B0B85FA5AEA4CA44558D70A408
-4A276D6B0BCF6ED2F5E42E97933AEC978D286B3D0A99C6C7AB10AC6D1C36B07D
-EA2F47489D4C2A55A6902C665B7321DD5324C6CE172349E5C6561B5F1CBBFD6E
-B5FBBB914307020B218D68C45BB2E9A0BE81C9E8D5D71BC7851CD2922656337A
-9659E8E0A8F240903FC34DA589EC6D1FE6CF17D238576472C0CD1E0EB21A46B5
-5B9DACB6CA3B094E51386E45C506D55EE3AC95AF333EBD0305084697383F054D
-61680900B82CB80D030270CA9C614A373B0B5B26F8465AE581967C6A336D8C44
-21CED60606DF99F05AFC4C37F53D2D97450B78F1211A2682414780DFF7F6AC6E
-750071385D6DC87B58D3D13E286F70B11A692F4BF57BC828C6AA98C44EFE13F8
-44535F79F5458B03AAE3ECEBF2EFD4AA83316E839EF7EBADEA22C17FF039FA85
-498379D857AE78AC68CCC7D1EB2FE84D465AA452F43EC1AFEFE568E42F13E0BC
-1CDF5C873F8E3952713BD9A472E6FC9CDE8DDD9281EE3554C22A0D591C91D3E4
-0B3162930BB6F0AC229EE1C847EC39BF81DDDE1A0B0EC7BC51A05AE93B3A891A
-3FEB85C68C88AADD29FD39F9DB30FB250D41EBB1124ED0069CDC49B3359D8689
-05DCE2A27EFF35751E51E2C4AEA7DC8B2AF546AB58D6BE81DDD38A3A0833AB62
-E54F54ABC2BB67EF06678D0AA3AB0B240FDFD510404D87A1EA75D5005984B7D0
-DE9EE818E8F99BA9FD646FEAB795E5048E0710CEB0CBD8CA39754BCF7957C646
-532525C2B94D55B1AF534778D653BD50DCECF8DFA4CFD08092AA4DD3D8BB43E9
-6F40CE1B0B25287C46AA961061A0AE3714A465E39694B6E62410ECB1F409F939
-51CE57A12C3CB5B4332A3BDEF4C13917982A0A4527440CAD427F1284E6534D68
-201DA7E10B4DC25CCD025DB0D7E0906C59E235CBF747ED10C3300C1BA42BF434
-1A3C9605F0D568CD938B0DEB5C5E8390309BDFA89EFA3E5F226A24910EAB3791
-0361A08FE539B158072E96BC988AB061736F7DD19DEB61DB5738F2B43682C3E7
-12D709F9E149DA4602201AD24F42BBBEDA49118A93A7F26B703AECDE574441EE
-DAF7C634669C0D907B18BF4EAE198E9F3DD8F743FDBDBB2FF8C6650F17115FFF
-890F0FA7B873022FABADAD05C42B65FE98E870568D2CF828CDFF7C1EEEB5BF4B
-5E695EA05518191A5E8D34EB22091935E0816F8B49AFDCC44811D12D3CA85A57
-8C67D67D400ECEBADAABDC5F7D4E1DE4E330FD1A954B925E2A5B1D0CFF2D80D5
-F668367C28480C7EC3359C781279E8928DB03E274855F7001ABCCE243ED7C259
-67D4705EE2211FEF30D8E82F9EA0838B905A9FB986D1DD200524B74EC4B1AF8B
-A0216BBCE594588D8C28A527BC85306960D73D85D96B652B88462881EA065E0C
-84485D21B22E71768A81037FA08C48EA83AEC7118DA808CC62783E7DFB121A87
-0A8DA5BC6AD5B8C8ABD057D94DCD627E2CF3D6AACC031BCD50FF49C658EABCF1
-E6ED48E7B3A550782F077CCE21EFB7368B0D12EDF21BDA1DCD30D523A8B94729
-1E339B18677721963F0F9FF961CA6B065A881546683125114FB8BFBF996BA299
-9CA4E3F5BD5C0D614E2515BB6AAFD9D16E1F0C0409A524D91DAD55BB9630C810
-B1DF32BC5820AA059559A5095BF09750F21E3AECAD39CDB3277D06B78E2A0A08
-533EF557F6815F1C361B2417D27F7D9EFA5C2DB0B2655938C8E9E1E36C411E70
-7D57FD9EAFA6FD2C4D3A40D2F35C176E0522C6D0969A2DB598553D9C0A1940D2
-F3D8241AB8DB63E8426BF19B093D99DECC9E2633FE5C77EE55951036A7E19CC6
-27A2DDA74A95F870306ACF9945AA4FE9E10F1FBC43830B2D817016290E50F988
-7283F8E409B5BD2048CF8E8465DC3EC57EE47A7BB678093183B453FC60A8CD67
-6CE6E21A859B1EEACCB9E0A3DC1AEF41C74FE0E0245587A5E1F107BBA11C2B86
-91690DB7158BDAA3F2D82A820A36B3684CC11CCC4802C5F8135FAABDDD50091E
-97AE58FE38F088A7348D08F1B9A14BFEB8E97D81066D5C244DBDD9ABECECE72C
-6A91E31A815E2B22652F7813BDF07DEF9CBD0E8BB6E7999511289A0CE3CCF502
-14D9A77E29615479657F8BE9AA3EBAC9DD08A04EE7A160A1C528BD6C2CE79E67
-8913543117C32977841E710DCE7C0DAE68888C8EBEBD9883B9F9AF86B1C5790E
-E520337D14F18FB14686356E4F1248B3E884634480E683DDDFE4B0221AF0825C
-AF3B27DC3156F1E0B5E8D75063A10A81A78698BE4E1A4C2F49D2E530AF1ED966
-8EF252D3CBEACAD0394B9546D51768C195A23A041EC1E3F21AC91C498515EDCF
-5A9977F9D72ADBBED88D5E3FFEC64A087FAB9DBDB268608247B977E435E4CE34
-F0C543383384541FF88669E53446065864769D5D3957C64011D7C93FC147B093
-9FA961A60BDDF97F1A3BF53CC18D306DFCFE04DF980F026428E84140542171F0
-F706A48EDEC416DC58F006761686EBA99598962F6E1BEC8E78AEA474CF0AD890
-A72B9906BC891564ECD5440FE6047DB452171AF35C33C24D8A23E41C112D93B5
-F1B422386DFBE80ABBF7BD43F152F0451B7B0DB2D71B75575CB5256C94F40AE2
-E8DB4CABF990502BD74BE028E14C1972E666932E04E79B743B3357737F31D08B
-EB9755DF6C89C185A7F13DA21A6E6E526A9089B11C6BB1F5247E31685B028F52
-555F98CAB929558BA7BCDEAE76F93E7B00B214543EBEA0FA375B624B4553C133
-16D6E2B846FAA862F9DCBD8FCB2A59EADE462BC8FDF8DC56B888C6C5ECF9BBB2
-4197F4DDA197A9405F639643A4334545A8004F05963A05747B4905A319411086
-9A691FF410F400E7E569CF8EA99102A57A569C223B8CF8A4B285ADAEDB238FB4
-5FCCC3A9EB063BFB1F9263D8B31D8AE580B6B8F1F311388B509E224F7E600A98
-DE394C80D1CC6391D45160FC7CE92B0CD7E74B0844DD0F3562B14833A563FE6A
-E5942191AA6BAE176278E9EC30533FE310F0694745C024929A65E4C411DAAF0C
-F3539203284EDADDC1E27FF0EC2FED41AAD7A3CDCBF2B4177647CAEFA2FDD380
-F6483BB02F87E1B66F1F5F8B23DE0ED2EAF4C540A5D392D6B49B0BDF15DEDC09
-13DF0F14E0E49389A82445230CB58704CDF21591EC4E721119F4786523A16BA1
-95F9288C0704DE543FD38496FC59B15143CA8BA06584BE7E6C9F09DD4F207C09
-F2086D39D48B652E45BD2FC4E2C4BC1FE534CC1109E177C7494E0914CD0E45BB
-C8461B6A6FEAC2A2742CB9B3441DB0340DA91F6C6BA5EF79D6363F68A52F3300
-7CF46E9F6D5A7E33762852D4BA13A1825AFCF10B00CF175EB0059D272DBAB911
-30D027A1C1AAF745E0D69B71FB455C1363AF42B7A00B142D9C8ADDF4CE9801AF
-71C666C1A6773BF48F35076FED27423E1CD18139F3D8B0A3E1AE44C55382FC66
-942021B7C1E3451D679218810F816DA083A644A378D6ADEECCC212169B96FEBF
-744AD8C249E092F87CE696C926ED9E61B728674F39DFB645FF5AA6D742B73CF3
-37536ABDB80094DD7CB7D0FC30B6370F8CF9B145F65F4220FA592AF67383108C
-3739E4FD2E0878AF00DDEE092CCD14B1E749941F342701F07097A4DF0EE5AB3A
-B3D9BFE0B1060ADAFA7D4E3392218E5A7AEFE4CC01827ACD6903C2412270367B
-FC75D8C1E290C5489BF2ADE1B3FA6E11B5BCF37FFBC42D0B3E7A7435D6AA7E8F
-62B96A05C15CF7025EE1B0D9CC2580A11A1F187DE686E6F8ABBE658382B212CC
-D9BAB099DD7ED5EC269FF8CAC8C16E101B7AFE3BF9854884FF0746A1B0423FFC
-468342D5D31CEA0EDD7EB5FEEDDB129B7C55DDA20291A18592079BD75D8DCFA1
-2182EB1AB128A319FFB027164B5F9505754A4B1C8DFAD7FF0C892D97FEA8F506
-C65585142BB9F986886117C7CFC66EE962D1609DC1DD36930A6525D1ED03AA93
-282605FCC5C7C651D657EB8ED0A55EE348994C18FF6AEF1D8D669273B6EE450E
-709E6F60358F225E209AD70E96778E8375F41BCEFF74D46D595C0819C85E60DC
-DB702C6AB7E90FEA2EB9EC299FDA15BE8A807EEBEB1BAFD628BB94B1E28EBD60
-B6DAFF828C2C80821C8ECE963DC90E750EB00E3418BD0858AC6595012D32C308
-DDF9F30191779BFD58D93AF0DFEDE67AD6902FCF8C953CF52188311EDD0D005C
-BD31ADEE0825CE1C25725EA2D6C9E5D8D9034C
+E8929A4813956AAB24BE7C20FCF9196E8E2F30816FE2279CE3E6067667A39E44
+488D58BFD17606AE885FA06F478D359A6ECF5564C095FE0E5038425D8B152750
+F72F41B3D1E7420EE91CF4A9ED5BBE8C2275624AE257D2BDF5752E803B426F40
+924CB5C29460BC09EC84F3F3A95F6900836F0ECCF6A7BB85A3F8D650017E5FE0
+503A73644EC6C6B0254F0259F8DD4AB3945950974CEB34521881A2506E76EBB3
+7DBA7812E0186DE2C0AD3E6D42BCA320014368DD738408C54AE2CAAA9C05612B
+E7F33218F2FECCE8DB2E4B3A3BCD9D8D0BAD7EDDCCAE45F6A15FD2B8ED263E45
+14AF0CC7B58EF52D5FE73023EE9DAB8249D1EB3B795C7B42BFD2A2852D2D16BF
+CD71056F412571F41CF7EE80AA916EA4FF1630B1E226F474CC3195006043B1AB
+915DA8A9484B930F1F00028287EA3802DA3C3F99961952E04B736CDEC7768307
+879B4D2D553518FBBA727266F94C3A607FFD5D85CD0FB802CA51E6A3792C80F9
+A637D47C13A787F5D9C5BAC24E843DA198B7CC898AD786DEAC0BA9B6EF955ECC
+72DA3A8CCCF7F3B69597A2F868AE359737A9714AE6D81989B4152DA33095DAB8
+5759080AA156DF1F3767120018CE81D296D813DC52786586CF3F38EE3CE181D3
+9D79439EE13D4E5799E03338E93315C3F6BA8ADC731A0D8282637E524C1E9736
+29C594C6F19B49C859D7CCA98148215F7E6943637797641D44DC9FB8FA403FCA
+BD581E477C7BBDBC84048141760B4EE0D181D585C519D02DEB7D1C650BB49874
+A75E95E6A17D8024346AF3288A32A7EDFFAE15BACD436CC76850F2EAC7EFF565
+C4273160FC5DC7434DB94BFA01D1648421FCFEF66D786CFF60F0031B649B6F14
+E9139B27185E6E9A70E439AA8D68C6535A42634FFDA55DE86BDEDDF3D6B73015
+37C7437A96CDAC620A29942E834F714D82774AED0A83771A152EAC0CC043CB09
+02574AFC4CA006FC0D24C3DAAF4D681CC1D2D7870F273773171A4977AD05A082
+0DF3F50C8A36D7D8AA96E82387AAFB48D048CFAE2CBAA88F1865B84CFBBC1731
+A212A44EB98265A8D4A8C118E038A0C3503B27D8B58846C4F3E8112C8B05A41A
+9F8B0E1513528F5D7E509EE847F7224AA06819954974F8065AF49F21840E972D
+C1B028B541BA1364045E814A9F8FB299B6B62CA150245D92588056992FE6D71B
+FB16F2B42A3DE425B302051FCC4A2AA76F6146BAA385614913D2B11191CA6A09
+BAE8567DCAC342D013C7830A0F03D848397110F021C63C9D6AFA90ABBC2DE4C9
+69EDFEE42C028640F9784E8CA11B83B4E7AB58F8335FA294DD68BA87FFFCC743
+67239D7FF1C54B725D53581832F5307FF1995D8273EBA54372AC82B7D5EC5773
+8F52B55255502008E0EDA0646D4D71137D822A57C0E9E05F3D61B91436B5FFE5
+CD90CABEA89420F4ADD844733B9B0F0C72688B9184A2EF69966411DF2B23A25A
+11F009C6F23E452854B77AA33129C531C2C7A8666D550A83CBA6F251CB016F0C
+940EC74FF62C721F3D854404F431DB39548F0785C5140A9D406C06306CBB0C99
+B7AA0E4680D8DE074B369A7481F0C12BCEDB787A1A9E4C71C869F5022447E317
+E6B851B8D89144BEE028D2352745CB0C081A7E806482F74E7EDDB5F1601A58D9
+EC5B92F7DAD1B462B0EB9DF227D20E2FD7963B11044F6699AEA42D8B6FCE78DF
+F13DF7917F8E9056EF57ABEE9A83EEBD2630452EF3A88FD64BF58135FFDFC5EC
+3C57C10AC6684044FBE557F1435152410707AA671D2B04E6D4C6BF928F876423
+072DCCBED74DB014BF98D66AFF1F2A0C4A725264A36724DE08EE18EB4FCD8451
+2815A6B0CA80C03444039CCA3F6713F0BCD3595E3D6E7F1EAF936C99E445677D
+B96724B2FDB0D2050094229CD7A239C0C72D19914AF99B2985BCFC38A6DCD1D5
+B79A09FC85A955742D9B5C023AD0D53AB5C3EF9853CD74A590441471DE86E170
+E854AA8E23F0F45734B10A87B00F671686D9ADAA574AE633DB6016479D81C5E8
+AE030B680944F4A4D0354BE27192D5B186AC4741E30F887C1FB12D744F3CAB55
+AA891F739CC87B8C9422335D6431CA3598CFAD661AD1C89A5126D0A29707BC2D
+DEF9DA9B5D0AC8BE4425B2BE0C0ED4EA2EFDA1D1C2D4176BF980DC11A7114BB0
+E3F4DA2275D60ADE37E9DF1FF70177368D6DC78065A734EA20E06C8878AABF67
+51BD3758E592B1E389D8266FA4F6BCA64FBCB2487194FEF05914180E879DFEE3
+5EA35A67FCDAFF1887A0F78A9880F2B3304446195CFBDE1399CDC39831D9AEFA
+3C432923BBCA48940019A61AB0464494D29FAC5E6183F9A849D9BAC4296162E5
+A44E1717330C117A402403BEEB31C9BA07C3331BD8FB4BC71AC31EFF81087E72
+A9D75816DF6FD9AAB57C23A46F6DF8415F281F5C39348E8EC540F2AB4BE0CEF8
+87DA88360D12F38130769D0758175FFB61ED8F20C7A17963C4F3F5287D360A72
+4175C45B318A0360CC569F0D47644507FDB4A3699A40662BAD1C65306D652C44
+5C774850560A42157D5507FAC1C7AF431888A5D9BE185AF7772FE57B1F14CA9C
+E13826E6E0531510FA1C8139A365B1641F6EF77F32C5B44AC42BD47DAC9C2FFD
+B99B10700968A44C063B45B96C380C9865667CEAFD8FEC20499966E1960361AA
+0F1D7B9038B27A0BEAD2E4847ECB6787C2F4811EFB5CF7DB92D995E3039C141E
+F17C1BFABE1CF58757675C45FEFF4F7E4B63F10B64AD4586C5AE9219D465BFC5
+DEC3F90DE72189503777D1E382F0F0732DD815B0313B0D0AD6E03A73D0981493
+07F1E96604BE2B3F2B227C038863667E9C58218AEBDD794F2D2DE1AB7CCB8854
+9BB56990DEEF6F7E32D5931102BF059120759EEA11522ECFD8AA20D9E136CB84
+CF6654CF3839C66326D4C926D15254DBB11F9D59A59494B1B794D79E167E9116
+CE9F16C91F297DA655422B05853A72F5E2932725A365B385DF32984364CBAADE
+0A65E573EE13339A505F7B1EA8379B15B0AA01CDDCE32226D33D8D957ECFFA95
+A70BFF143B5ECC595AE58174728DAADEC99801EE8ECC7EB0AF18A056E5B279AD
+B7337916675D3A20A1A45E46FA55F29EE05D38EEC228EC6834F38AC0C5BDBF53
+883BDDE80182B4E8B4606548CECE724AC6BB986761C7618095D4C6B83E72381A
+3E8997C31B659E585708AE8653E011EB837948B7B09E980832BF09A03D244DCB
+A5C89C3B6369C83788E1351F198BEA1F98C36B17A40CF2A6809C8CC43C18DEE5
+CD29DDB52BA4530CFCE4711059B88DC0D16C0F9D6DEEB058A108CE5E861A66B3
+BC088345B3B0816FA6CDB44BD4696E4D80C73EA34DD795A79C700E36AF4E8256
+76D001C35751B85A17E7BE6985D2FF8D697947CAE32D033EBD5F53D059AAD1B0
+D36391A8C6B85E4D2F08D151711CA356BD738888AD8FA88DF2DE7F8031EBDFAF
+CC40496AF010278B4AD4921FCE02A732A26700EDBA79ACAC0DD69E4BC0E553F0
+0357F59B6DE1B76C9E5FA97A51F69BCA3182F2CE60D0A6C3EE3C917237CFAC83
+1787DCFDEDF7851B02EDC8F14D5B40DC05136BA95C9B9EB2BC5091F332C77386
+1D7EC7AFA6BCCB87E8AFC067F45589667E52AB0D469832D209E445CBE57400FD
+1CA88231B2772B22AF30B5958F8703C3A238B4CFF00171D30C939D9500637966
+19F43DFEC9BD39D516365DB22DC53DD20AFD9511F7B1DC92E0E2191558C97633
+C71730A9E91B3E5639CFCDB7FC7C0B07F81AB1B6FB42C9C27C41B6B5B36287F6
+A80CB722E8795D88AA29DE0BC1275CCC2ABC39E0AE1C15BF0E24C94D231C38DE
+B3D706BF3124B31FD10B6D7A39976D01F21447D41E39048655A44FBADE0B5DB7
+708EB8A877B3F9200F0C43CA35D9A51D258CFD34BC1AF9760B1F1824D65C0DF1
+37781D7A4EFDBB1D6BC8C7303054FEFE34AE8545AEF43FAD7EAC8077B8F23583
+7F793569199A57BD8D1891102768BFA56EF238E990F437060C8772324AD54A91
+7BB72EC46725D3684DD41C25A779C6D6FCCF404399A3FD5658CCDCE608EA9AA0
+BAEE911972BC77AD27C54A9805AD0C041F532FE4F387CC8A4BD24FCECF05B843
+87824C8F540396D1AA94ACB3337DF1E135263EB28C18018F019D6A406A506C72
+59B80CDBF79C51B22A5A70F3E1019AF79ACD67DAC7E343A9773092F4539C5066
+2C82E3442CD513CD8B922204F1FE98D95E48C9A165EA3FE44957A8BED940258C
+977EC33FA627584D4AA5016F9F53D5E6C71FEACE09C91CA0FC92EE825D8DAFB6
+EE671B072833CC1D8FCA04874A6F6081D6413874F0008E7DBC9DD88AD374F6FD
+F4083B759031C5D76A11D30A4B99C33E9A5A75317C1EE0E154780A9D3F235284
+467919B60F44685B760EE3062164A04C304B7CED681C7FE0764C4A19CC14828F
+B65BAA2176F3B3232C62F2DD26C145DF814D37056830B08B0FA9BE0245BFA82A
+994A7341CD152783100917C4DE1EC36AA31FCD73F3914BED2A0393599E9A6572
+202925C9C7E55000672235AE2F557416E1032AB1C287BF53989EA541018192F3
+74060BCC8F46E073F7CC001F03547D229B1C53185147FA4DDC2B99A5DAAA041C
+6E8CD64B9BB3AC5DEA2641858D02A79FEEA73F537FF5571A20D8FCC7F18FB20B
+35AD024FEAAF8C2AF17A8A04DCE887681AE02D6184A8A20275E3731026C34E59
+2E17E820BE88FCBECF72CF061B5110C16D36DDB19DFE009F22642AF7D0A42C29
+FA410E4D4F58A3F7ACAB152480BA58CA3415C3C8BF76F9A976FA5DE2111A2344
+D581D2F73DEA5EACA5DD1C4E9BD0D77DAC82C6B407B1726E018D26081D87B94D
+B6B536CE84BDE6B73189411CBBEB50C43E64E3FC2D24D7979A408F568D900EC5
+438FE7EF78116A98E2F6D117A6D9B12D27A96FE28E9B25DB946A3852E21200E1
+2C258483657D525746A678DC4D3726E890485A742BAF318BDF08CAC98BD1C9A3
+FF818252D2F1141185DBF6D84D7C393C50BF90C1D76A8052CEC8FECC7E196C61
+30F23DF9BDC028919D694759967789FA88907AC476B02C9B5E925A5143B1AEDD
+134DEFDB26DA3B3F646FE596690296681FC17F0D22F5A0B1375DDD5ED741219F
+A6A2B2F6D20ED4C031861357C2CA7D86DF95E82B1579D26936BD9A13C59FB004
+33088EDE3435BE982D6AE595BA825F64A82F0D6E84379A67556584DD0F415047
+33B6462EF72860D1A9FBDAB44CE06981D17E0C0712D86FF158C9A7CAED4C4331
+5E4118D8AA718FA6A8D371EC1E8421AB116E893E905F5E352F7AC4057D4C546F
+068E508D21B6561AF9F5651995A9FA9DE2F8F6276722949488E53BD5169F1868
+
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
dup 18 /grave put
dup 19 /acute put
dup 24 /cedilla put
-dup 39 /quoteright put
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
dup 50 /two put
dup 51 /three put
dup 53 /five put
-dup 54 /six put
dup 55 /seven put
dup 65 /A put
dup 66 /B put
dup 70 /F put
dup 71 /G put
dup 73 /I put
-dup 74 /J put
dup 77 /M put
dup 78 /N put
dup 80 /P put
dup 119 /w put
dup 121 /y put
dup 122 /z put
+dup 127 /dieresis put
readonly def
/FontBBox{-20 -250 1193 750}readonly def
currentdict end
99B797CE549B5C45238DD0FADD6B99D233AC69282DF0D91EA2DBD08CE0083904
A6D968D5AE3BD159D01BDFF42D16111BC0A517C66B43972080D9DD4F3B9AE7FB
11B035CE715C1218B2D779761D8D7E9DEBE277531BD58F313EBD27E33BEF9DC5
-50C7821A8BBC3B9FDF899D7EAA0B94493B97AFEAC503EB5ED7A7AB613EAA9394
-D530C44C3FE66EA8FFB60C9AB182FD0F3F939F2633EE5CC31283CF157B4B8D4D
-F4885866C66360340649649BAA36FFEF7EF359D2E3276F855D5F47A63BA8EBE2
-DFC83528B60BE793381B89398CC5F00F8A63BA929BE36FA5327BDBE8B68119F5
-219D0925E7706B4E90BA28D2F6630A56FB0C73B717A4175EE4484E030A0B56B9
-D0A6E4244E9C27EA03F3F041F5F6138FE0A10CE95492F8505D02C395B5466BB9
-71F42E9AA34E61896DE1837B6647BD578A66320A79C6CFC75CF4234AC6745610
-E8EA4A80A08C87FF834A997C73AED3711458D395DC0509FC4A0AD8C02BAD0A82
-1C4CBA3AAF2CA5FCFC79CC0B2755CB1BD58F3DAE3B802A3ACA5E3E04E5B6C577
-C7CE3C88844C19114758B2E07CC5A3AA2932221EA2794E875E7CAEF35828B992
-66C970DD5FB13C21C787452BA5B3421C9BA6FE12900ACDE16088734FD017F221
-0D4748A96970790A94DB9EECFFF0940746ECC399A614C8B91FD2A46BFE7FC0B4
-FC3716DEB3C23475D8051C37033A8F4AA09F24190BFF65C44767929374C30691
-CC99832736045D3FDC8D62875BFC0371FF64613AE62E07F6CCB07990D44CF2FC
-15584D20F6FD2FFD9390E7C4E04DE67093A7FB7ED9DF317FCEB909B9E3910CBC
-34F3C7870FC8200DCB0EF4F0BCB8BB88DAF95FC2C5BD4ECAB0AB0DD5AFE65881
-8EA6E45ED985DB9EC02ED4873C8A61A6ECAC723835822AC111821826F894EB97
-B24CC14F23899C6308B46D439228ADEE575D8573B75262FD39778711F255514E
-B0089950B2D5E4511A505BE441AA0B6343986C5D47893B9F2EA8E2B0985F25BB
-F101BD6DF9A1C8F911AEB5C80476F116888D759C7F69C2CD17A6B6E13E2047A4
-97D50D6C7F064682B6062F51CCAF91AEB28C3D1A27D00F1506A5C5E424B7F9B9
-F61C5490109EF8A1024272CE56DD5D628366E66338F9F41C1F7374F3C45D1702
-C4B76468B7343E2A999C0C3D8E7C98F7EB90C9496DC1D929CBE7FB546E9E4BE6
-2EC6F77921A2359C9E61F3CE84BBD3B17B223FC3A0CA8DD41536CA5BAD70823C
-C215305F6E9500FC9650C26BB876966288E3BFC6BE74A284D71D7E573FEB891B
-932E310DF30B91BB20473670AE22D21BC21DDB40AA887112D92B04160329B176
-A5948E6B84594FDE8242BE92EE065CC3DDBB00A58009C649B5BAEEE130BCDD1D
-B9410289F7E4B477F52CE4E97C552F9A8DB5D573FC8AA35EBC7FA4A3EED00540
-F81650DE47117E01F41B7DFBE4945ADED1AD195D4E39F91D63E824100428CB42
-C7A4919B154D1EB79274C476D89553434CC1236E64D2070D24432B4AE25F346A
-C36BA7FD43EB7D4C826C4DC20C384BD67829CBD4696DD17040AC41F8E941DB0A
-95F10349E343067E14F3CAD6C2602D3761D445F6FC94BC2725C8183A7B9B63E3
-44ACFC71131CBB44D872AA9DD609402A03394F9164044005575EB84CFE261812
-70467860A055806E848E01E0245E35EFE12505F425055C32790D2CF475613683
-8B22770A58F3CC356ED3367990FAB109806A5F37A4706DF098EE353F1A626074
-84295A5E4D070E690891DD216B55702FC9A222B5C6000648DE1FD15CD00F50F4
-EB0F28CE7E4DF26A9F5AEA01CDEBFEEB7EAC3BE1A8D2DD9CDBC9216D9CF56C48
-634858C1013AE01F60A19D3CF9D33F02515E1B1A0AE0CE5F49EA2355783E4A03
-3C84920E68355C206FCAB59A91B45DFD25A3D965D2853230579E16526715588C
-1007CD787D72F52C3683DFC7D755AA5820947DCE4D401302DDE4CC46767992D4
-27C9F753D3AA4E52A7DDA0928F2C5A805DDD8D0A8C14254836EE24909DBFDAE8
-20DCADC2931C7AAA089697F00A3F25413FB841AF905C8FF3116BAD21913E3EB2
-9CF58D0FC5AFFE0F08BCF2FDD13684310B586532BA479346607D025C7AC53721
-48751595A910CF11AF8AFACB10D7EF7B8A3B80E4A1782108BB24E1279022F59F
-24828A6B5EE73140A9D1A74AD774C3F4C181179A012B726A922E5D54AB79D5C5
-958344AA47437635790F7B2CB59B9191BFE0F6FBAB28CB78F506DA2A1D601F44
-98BEE1179546E2FD11591B5D50C0B1101AD8B33D4E54AF2C15DBB0570B88AF7E
-43944C5D8D05D817B18E6F41C7E900B56A9CD196D5AFA1D715CEB73C07DF6EC3
-3BF7C9411140B544A6866AE691F55E94A72E4FFD922A2E08FD4C183A5693C355
-AA485656735C842D353687887D59EE375080A61954F5388D52739A3248543220
-1555FCE8956CEACDE634684FC3292089B1008290797B6DCF9F8C7B89E22430C1
-F2C6DA1BF663C05B3BD7DDD2DFF7B6092E377517890C24F08507C9EF29B11F39
-C9A989EE270AAC39C4C12B1F8F749D6C67EF7A0E39EF5D7ABD889F4579CD6DF6
-6EEFB8C099A9087B79A66C3F27C01A12B6692AF19029C257B4C5788BAD3901DC
-58BE54AF112DF564E16E05E3E1A5ADAFC713DEFC4DFCA8203866D95B7A3A7CA5
-0D094D713759132E3069907BCDCC1E411F7C5566D25789F8ED8858FE86705556
-9DC7AD84C8A5F71C7BA386E8E3159927E70616ECE077D72DA51082B08BD36FC2
-25E0678828BAEA91D699871778D34AE22BF05F59FD8A7B7B00D2984AFA884DE2
-EC201E75E02425AE70B432BC1A13A611675A858EFF58E3E10BC679A9AF72912F
-7A3368F44BABC0FC75D32F52E10DE61446C058C83499133AE468281F5609B217
-8008A521909151B53A0802E8C0AC992C7C3BD31E86C9AA2368AEC7964AC23E27
-F5136D4EF3059E332D19121CC95B77E4A40235AB5C3753C4012D62CFCE894094
-EB5D7D7F576CC725A6474C96263384B9B33AEB121A9E40A76937DDE710DC0760
-414F2167C378C01B0124E9A907427EB4A13B8E41CF82BDF4B16E030598B06120
-8F8ED0DEE7E7541B0B5AF6FCE95C20FB7179EF0DA411401E4BBA678F132F60C4
-CCCD0CC45A6B3A3DBADA100D3D24ECB57E3209DFF35ABD022627249C2C9C3971
-86154EE0189583C45C14A3DC8DECDBE168FE2AB8DB78B0C7F5971D670A51B76F
-48B5418F89383F1E7CEF08BAA7DF462E573145E3CF27B28841304DD743C82AB7
-CF134DB64624B7638A86BC077AA3089500749720531713E97F69AE7C908E0387
-890C06F7F621CE571E4367C83EE44A1A7A306DF62B5B1F0F08D4F682507A339C
-C36B50F2A0C9AFC456A09AB0953A983827CC570C3FB08317859A9BBE8167F876
-A744DB4EBB7746FA16ECE4610055A35A08696A78B27B9198366FA2A6206332CE
-C0CAAFEE4614B533A9D3BEEC9B8F8C13B475657AEF597FCE507704675EA219DC
-B350AF6BA3666F18CAE2531D78786DDCF57A4F4F12D372C9506B8944DC003A45
-A1149BE50F318CFEB619CF277A387623DE238A4A856BC707D19599FFDD1DE0B1
-D5062FF6DC6C279E117DD53F8C642B7E0461D36403A86206442410EC08AC6BEB
-9EF318CFC9B16DC39BC254AB31C3D9516187AF81B5A2588A8362D982D50785DC
-BE4EE2CC4E331EEC9110FCE8D18D262AED1E603825B546027D8895A4184AB49B
-6A1471592A7D7982F88CB3729D88FE543A460B3D22A466CC890007379E4010C9
-9B44A45868C1515C3F83983B9EA396A0A3079DB7F3760F5FC65F20391BDCDD25
-6FCDD09C0201E57DDA12C152561D3B6D8D467A15B9B82D58554164E661591D7F
-604ABDF37F1860FC2E08521391DA3BB2CE14AC808E18C9679B6F71D2C39F9F61
-906FDE8114D1B7651743336ECE541C9D98E83BD48C9A42720625562E371D89E2
-ABF50E925BF879BC95D5831C5420B1732FC1329CA5508F7517D819510E7D75F7
-9ADFAEC110ADF216B532B7C2F3EEF1C79C664E3919B693A8B88B2C4079A3E222
-5A8AA36205B087734FFEAB10D1FBAFA1FB04CF10A269C36B114EE2325E173207
-103312B15D3FC60CF8B4D42F46FD36A4CDFBC6CEA9E1967C19060CE817338867
-C7C27BFF13901E44329B80EEE4524C4C306C7B8AC2E572C5002C2EC691CE79BF
-DCE16EBB1992B0AC8AF106000DE0657EF6833EC910AEA5C7E6A5961650420BDB
-407F15C8800EBD140C5A10A94E10926FCD387A35DF2640F8228164FEF3598989
-640DF5ABD9A6ABC6A502887CF943E7FF255B43C2E4B1528FE6D9A70B57BA1F8A
-FBB59E079991468A8DFEEC37A4E57B943696439307D026D7866EBF4720893FB3
-4077A9783B054DF4213189BD10FAF1A41203634D083D7B2C10880E6DBEA9F551
-00976D8A89A480B3B69C021AB12E357708162ED89FA44DC514FF9FDD08C783FD
-D2E2B302F26DABA2B9B0CA6CBEDE960AAB60482BD150A4A8C536F9A274F2F317
-288E371D40745D9B37E0BF1EFC4E4387A161032EFAA51AACB236CC0F72A15203
-5570ED165D3B5664BD7E22985F53A9120826F1B6B32AB78B4D58AAFD958B3C9B
-0CE52F477A86A6C1B342D1CC12CD6A8657DAD2DE07FD60C756B0DB678BA8627B
-718C459399C34391C94326407BD44549F6E6BEA3097E796F9D5567A74CD3DD06
-CD66C78C171434C4D8D071E6680047206AB5B0700B8958D9990102E6F4201FFF
-7AA8A4F9F268F2E563E0A84E3447C5E7AAFDC681BB3ABACF428B39F4DEC69E87
-709E1E587A9291818C94A400AF2CBD3BDFE018FEC68FB52E8AB97384EE700D45
-AEDBE0A79875084452956D3E8D08695D5CF33DC65A08A2E0CE49846F8D658B1D
-290B6590590744C3BAA07B6ADD4495F84CA5EF2068564BBD28EF31E99B3EF96B
-D4DA128EBF30B5E71287EF4BE6F11F3968A6AA9FB8E039024BECD94783DEDDDF
-3E502CA25E421DF43503147F5C40EA9F64B43EF05371D7D02CAAE4BF9C3068C1
-0E4C121DB30233561855CC115A2F1C71205E13044BFDEB88A9A26FA7DA776760
-6F6232121EC7A05E952E3EFEA5C9BDF95544F47FCA6F9D49216BC1E6357FFD14
-FE08D4C9F858511333BB1391778D5F8EF4262236A3121E7CFDCE346A11585A0C
-ED8179AD3523C567A694592DCF7A738AB11BC911513A9B429070B632A5AEED18
-912DD44E8A951515C25DFEC549FA08C16DBE0C080A0741BB722083EC4D728B63
-51EF23AEA4D15015E4803F8B38EF5D7A4DA5887959AC0E1EBEBFEF3E7103D66C
-0D1C944094B48153CBECA0CC877300D97CFC241FF4C5BE3BFAE5D9DA8BF64E3E
-8F8A7124BC2A8F690503275CFD9754298D6401ECA1CEF653EB7A8BD1E8C27E63
-09797587800F513BB09F4962EFD8A548938343FEF44114E632D7D9F305FF7D9B
-B043B271955E971EAE369CBC1A569B673C636E1F3E8BCCC9A7EE73745BB4F6DF
-63E80317AE5FDBBEAE0AB05C5707910CD183CBAE9443A82D9C622DDD8C77E236
-4337FA68FEEFA8D6ECF883DC485FCA75F79579D2C3C40CFE131BE8A25BFE360E
-9BF74B6F008041D1DC288BFDC72E7554B9C35A05C802FCF91842CE6D16B35A17
-E4486E436A0C04F7D291CD06E87C7D581D4FA8D93C12F5FB46901264DF9A8491
-065D87BA1A715E107954E99896F46315CF212205CB224C91E8E67963D36AD1E6
-1A400BBB3FC39A1B94A577FB13B3EC5D1DD8D069FD2B946E6740D21D7FAA834C
-6CA596D24CF483EEED47AB8C11BF7BE8C186C112964DC28327C204F27B5242B0
-A62860BA758A6F57287D2F8FAFBB95BA694434C5E712A61AC48AA10792B51530
-7B90E890483101DEF6EFF5D6307CC24DB5D29CFFD204D43CBC41F30BD1940C80
-6BABE56764FE8FB6D14DA7B521255BA7A7FB773FA937D0A862892EFAA8713541
-4C18EE80297873AF7194C73C4AF15EDC9E394C7BD1E6840009CD40D880287C33
-D21082789DAB3E97A9A1CEB69139DA7B1195286914CDE1568CA47BB86F33DC32
-AA54AA2A59002F8E71E6592674DA1699E70D1B47932F068278B7B27D91703059
-7D85FFB3B8A554577E1C6DAE72F6DEF4757F62B9C49B070FCF09209BF8768C44
-D9C410F015DFD1E06ADAC5D886A2C887F83AB992FABAD38EABFC4169369BAE6B
-0B2D01785F129E1774EAE997A399F025C8C4CF4922AD2DFC9ACEFDB302791EAF
-D49F3B69B612A2B62EFB321E9A19406F021A514E6F503A8D0D9E349916C2C170
-F000C0F5C933396F8083413D5B5AC0F92E2FE4D552107D2DCADE18148C5CF45D
-05CAA1F51E0E00AE0C0C947E62A4BBB46A1797E3D734CD825156C60DC85E23D7
-902D68CC9C70611B37BB0EEFCE4940640D53599237EB0553F689791A736B37FF
-2F80A46C8724829E24975EC26AF48B3B1635BA37FB93B11B5B1663FDBC3E57AA
-1A741DC449EF31C1FB3809AEBA79424C2A96FF0E7D8772FEF6DC790177CFF682
-8F3825E325A61C9FA69E48BE691EA1D0CAEC56005764DFFFA6BD28BF4CEBA8BA
-9937703BA66A82F00AD51ABCAE57A0889179E5A8C4567ECAB71CDA45D2F466BC
-2BB9BE3DC301AD04C989EC67B9167136E38EB9B7BDEB8FDF84BF10AD349FF6D8
-ED5464AD98824105280822B9284F2AD285E05CADD239F64E32777275DCA340A6
-9DE9E99C12B97B9FAA8CC225419661542EC0D6D9AA8DDE52172233EE8498075C
-1F2DB1CA96A8B97209B24CA18F8D65D9D0AC7281EED9CA9035FC8DFD1B956772
-5DD851936729D332D4CE9951F7CEDF50FC5D08C56F4FA5EA38FF38C447C01ACD
-A462C73A1C726563AEBD55E9801B32586958C727C260A5549BDC25CE2B98FB38
-BC38110F20411E2B572E79552C396BEDE7230E9F677477682DD5721FA789C4AD
-A524A520DF586772C6406685C5FAC5F8C090357F38B8139DE9D4233A28574BB0
-B20E85EF2405FC38C69378EAC55C8C2A18E7CCD2DE3F6A2E884CA35AC561F9E5
-4055C29334DA2A5F4486150C1AF0B131DFFD78F67F4F286E796E82C723E6186A
-6256A59680A162BAF502C3D06BE15B567A9FE32D3DBA21B4F074A3EC20969D9B
-102E64B8A37A238025DDD2147731924ACDD2E7F2985DAE32BB8C6639B64CDC8B
-1B3B847B7E0BA43022F9212F6B80A6C1E0F00C4FA97E37F3BC26B7CFA0D4A511
-9330625B616C314F926A18D5AA3B37DFBAB3F1571CB4906FAB3293C24BDEE506
-07A5695CC3904127E4291E2F19815D7F9C53F5CB1A02019257E68F150513B75F
-188CDD36AD1AB18823951F5237A599B0CD3ABE320D2C2797520CF4F51AAAEDC4
-1169B1AED761B16A25C1A9423277FDEBC3373497004367ABEBA3AD233FC8787F
-92A4A4965BF5FD4F5F4EEDA82EEA3BED70B0E5A9B0998042E30AB0425216BFE5
-8AD806CA26F1DA26B41445FD9690E6E04A86D45E1E2CE22E3229614F9C07F585
-F57C2CF04E830EA2C8ADD6E126C124F459D66A1E575E7ADF7C5963FC3FE74643
-F6F60133CBA6ABAFD3539AB858BCEEA803D5260F0DB6E23D7D1F0EC2FB47A98F
-2A9E327B415BEED3D0CEAB1A2737D36C2E3A3DFDFBC0D75A9A2D251930FDFD5F
-7B9170FDEA176AF97EB70523673A39C1676D113EC7F0A760FABD6D939ECD02A2
-8609EFDCDAFE070D0526AF58883B9205E11BB726259FD97E6AA93FB05B296080
-DEC8CC8655EBDCCAFB6BD42F20225EB34A8CE6F881C0600B63AE58CD3E91927B
-705262B48498E76901EF7CD8A4607FD7A8BFA4EB14A3A4E78439E074A3CD1B6C
-56C63FDC56C2A29E1790A354EF0595657A022E686C0BCB106A432A242794C869
-3B468E7DBC9DD8974EEFFDBEB21AB1FC4963E9D70B7F69B62F6847628CAA171C
-E86C0D589BC6F584C5A6035D375D215FCE2DE7E03640BA7F2983C1FE2EFDA675
-44996DDE255EDE2E0EA1EA461B178B764066F0738084D1DC0A717ED3C5E002BC
-18FC3C6AFC5F415A25AFAFBCDD5E4E304EEB56EAB5448BAA447EA9B912B725B4
-CB0E3DCCBC333C7F0944545CD7C06C7927F2715F2C32EA4861FF7EAD682D63AD
-6FE869229940972740C078A9B14D5DD30263F690ED7C4AA1BCD48546467EAAEF
-53F205D24EC5A8185B965725E433E6B1F9D829D09D3E32186D7F069B05ED3536
-AE371CCF2A86F507D775CBBEB073703530EB9C13ADB6625AE485F47FC5842D64
-79074FEBB50E803F77809076725FEED43D4107B01B31341D32414FE87CA93A23
-2621F7264FFD3EF958CE17087C76C8EA88C1D8CD651090F9579C11584B59FBC3
-4339692A52ACFAFB71F8F9AC7445AAB7D6EBF9CE4E6D5847F1348B84DC01EC9E
-14659686F6C1F9C4DDEFE3FECC758F22B62DE54BD2CE3199E7B73BB7FB00D673
-5E6CE00B063FA54833E574320107613502A20B188A7649BEE66022EF48F02370
-659D37403C1D2BC66235B01BBD898C085F7BA962240C83ACA240289A57D14FC5
-E1126951E7D4B3585A3BD1F5CA63F63861F203F4893B95ED75102449DBCB8C9E
-26092452809C6C55B1960CCE65C5806D5B1A3CD8AD1209B7ECBD45B2E663C318
-4F47A682A200A866D62D909D4A25F4B1E4EC07DB0EF30AA950563BB52B201080
-BB6F6CC7BFF7BD8D5AB947E975CDFF7EEA4C234CEB57ECFD51F712AB681C51C1
-CD440E61A48A339F7BEDA750C7986A870C53E1A42B2EB9575FE127A4344B2F3A
-2925721FB1C840973D28C3E490DC2DFCC50E7D5B333C486E8DEF33A08902AC1D
-1AD15691AE5C308DAC6E9E4C6DBC8E91A0E62CE7553F7EE677C236D5FC2AD64B
-93C61D22E39B21A94A5FAB0D1159644B5895C7AB28D67F04158CEBAADFE921F8
-708DF7780BBB53353BBC356C5A30B1311DEBF3032667E6F58F3140B500BC1389
-2E268107E7A2DD447287EFB49812AA97253A993E155A0A03F8C59ADCDFD8E677
-568B69CEA669882833B1E74B658F756CBB2F8CBE47F5EC60BD15E198A3C3F600
-3CFFF12E11F7C18A38FEA39D14D2B2044702AD28B4841B7CC4DD5FF15A2EFE00
-B7977EBC290A82EBE2382DEBED2021151A954B2416BFFC75CF127BF2A4AFA2F9
-94CD77EA8F7918AB471D33AF1EF480C7C067FDC4CB8122C6F55C1E92E7AA0197
-82C1DE1C0610903A9C8A4A6B4217AD559DC4E33A0E8A3801CF31B0195AAB7D77
-751B357EB2ACAD4A52B06A0DBED89A2FC0428CF99FD570B4E36575A35AED7F28
-27C14CE9DCF1497EF8E0D0A7C58C00B1BD12F76B50FA3FF98774F0EC9CF92717
-02E79D948D45BF5A2FDB5B5956AB31C2833C381931C002741B669ABC0A20DD35
-30F4CF3D0307D145E90DEDB9275E6B892BCBD22BCC95DEBCECA270823233BDCB
-85E12C13C7EAC5590AF06926CBF83EE4E37B98D1105F04C1BCFAB78848BCECCB
-CEC7067C7809F30ABD4AFECB1B88AC31C769BCC3FEF5F1F503A1EB3DE899E58D
-368B0A1E545C50DBF0427A9CE238285870A5BE619BB212EF6EC7E417CE1A0FEA
-DB00A94FDAE477DE1F39C91160292620A5A6FA48594FFAA1DE64121864295E14
-C4D5096386C52F99094C2002476C5BF383BC0C55FA377DF0023BBF3F52D27620
-2F22A07F251551E3A31E53ADE4F5D5C9C1EA12720D95C6A0896D87FE2E703B46
-3004D91E86F41559987DC5763EAB5155DB1F8320266A405A39D6E274A3D18C11
-40D21954A786789F673BCD0FF0938DC68421A2BE201DEBE3570BE1DA4911BCB4
-9B219582E3628E1C4FF88262898D160C58E9D0D5A86571CE87A0269977745E6F
-49652DAB033108692C9B1C220EE07F72CC52BAA36BB1D7209B1A11B2CAD3CE67
-4F14B87DA489C2EFFE0E2DC1A2B6B05A8660D5DDE1089C7E7C899F2A528A6CE5
-A025BF973D8959EF4434D2C70F77D826F85009E5F909B88233A8CE812A5960C5
-05243F44B5355AF815A5AABA6511F5F3FA2B29F37A4E29EE575845F7F05BF087
-5B3AAE4637D0A6908A5086756B3BEDE605A718F5E5B47520885F283C0AB28B0D
-9F277CE965E22195CA1DD4A75E4DE0597C374FC9A0343BB87D675D94EF9D87FE
-89ADF37F61B9168047EF1A2234811CAAC507F27235E4634CA4C2B2999A575C69
-3FE19422C170F8142F3DB38AEE76D1BC4A8C2328E987CEB840CAF69CD0F0007B
-D3516F7228013D79C891BEEF835235CD6920FCC6A604648570277F104287D6AD
-75511E5D835319E1933FF896CBCC559A5ABF2572C430B8EA62ED314DED16C2EB
-A5D66CA97EC43FAC0520A3295650C1739D91539C99169A3592BF84E8BB378883
-8B3DB2BA623F01524B180118CAFDCBEBBBA3A760BBBDF2F7AC62024B298166BC
-534E7EA23642DCC4A800A0D605D88909C1840DFF31E8E9A20EAE691E07010C0B
-7C4386507038CA310ADF5A715B1525F796BE864DA5E0B8CDCCBD595D7E31F9CA
-2E85E80D313BC9DBB3EC41C8FA1632F0E75F63F137FD5BA01BE67A440F81A72B
-94A1E913CD4474E1C77A3E6B81E5F058BF583C6668A65082F60CDFE05691ABE2
-4D10B4D0CD546BA8638574A24841BD606BABFA018FAFECFA2F5D4293373315C4
-83E6D6B36B15D2CCE993C19AF2847C459A9FBA9AE47BAFF41CC6D3ECCB692860
-7C1EAE7B393C5690B72B5D4C6B2FAADBFC702E026ADEC06710E7592CD05E3D72
-022A7E117856F8D4644122045C1478728A48CE386D9A22F2C653C6462D833ED3
-DB934E4327E69C9A625200E215FD9A399779DCA7584ECBCD0C4C30E0A7DE7EE7
-941B838664EC4DF49B1C70D36BEA5FA0C08EC780AABFE652EE05C088B4B59BF9
-D794D627FE660D813FBA76A9B13A216965C8D4ECC31F9CC72FF1DB04F55BE4C5
-9312C84EAEDE62E6C9BDD074D38EB7147FE6645597413E8AC10340AE96D4E84D
-14FBEDBB96EC767268B7F0D7F17FA69A395E7B088C43CEDE2DD934B96072AB36
-BCCA43FBB6596791FE9EA006FFA4DC3E28384A124D5C5E1C1640164559FB44E4
-DE5B1CCE7962008275C41EF90DA2FF73BC92D37295DA4B47EE7663AD3FA3081E
-C6541F337A35F616F831B5BAF3289B2E6DA16960DF72F1F03F19BAEA35F8400B
-A1ACE52D96A11FE3A368E476C5BF7B5466929251A08ADAD3E2034DDE0B9CDF8C
-24B1B614C42EBAEB492ABE6667249F53C35D655D4536CD086258538A407C6394
-BFF608509B387040144662A2C510522CDB60B1C44C826FEBCA5ED65FC5B9992F
-7053C423D8E9FB4B2A92AE3E373AF9F979080C4C40F2B581A83FFA750C5835F4
-17F6630E3D98EB28A37EB425F1DCFA27F4995605A82BD9F4C3FD26A2C6692B6E
-C7C3F47741E0C8427FA2511D5FDB08F03555E7D4B2CFE592EF027D7FF58199A6
-3C8759C332C66EAF33156A1C3276053BA1F5052857F1F01F5147EAA70C126912
-9D54B91270EE22DEACBFC154D028F612E7D729ECD5D4811B3B648E4A13112FE2
-3ACE506353F913D55845453B85747DB452F0CC59FDF5220B5EDE973D34537180
-753DDF320DCE92FB09449F685AF03D72F9964F
+50C7821A8BBC3B9FDF899D7EAA0B94493B97AFEAC503EB5ED7A7AB613CCEAE69
+BDDBDABC60BF16B61C044A68AA41968B22CEC6F3EA7B0C02C44ED2BF3957ABF8
+B03474ED11BDB07B69BB517CC6A6953FC1732CEB1D4BF5B6C27F30889B4DA0BE
+B48781C7C224795CB655BE03CC246E4366C918F4A1B8FCB49E85E299B923E95D
+5711E49455770726136CC449420520807FEA21FAA658A4076ECAF1B065107CDC
+ED0BE922F22A283E1AA2A900CE4D5F55259C475F1868A7889D46DE0D8E0F17E9
+14175EBB20E16D9E5B3E1CF776F28CE5BD16940334685862F9A6EE0B828CBEB6
+EED4F34ABCB56E7B1D6F65C94D74F286416836E5B4C1CBE19ADFBEEEC3FE7CB7
+21CDB89A4FA18C33B7E215591250EE5F5FB888624010C7832CB7AA7E088C7B61
+8AB01AE7963B2C511344B963A60C59542AF7D88096DEE782C9EA80C670966208
+020786A1C0D0C845E08ACEA8F075F85394D3D923F49FCF38639C1FB1CA0BADA8
+FDDFB7121B0E367353D6F95BC523C08C8DAFDBDD2B0FC9230A6B7DCE6CFD27D5
+DEDBD0380CB1F8B0C0852336BD5698367C6F8A32088299443570141E0E09C31C
+BFB95FF1D599611E27A00328566920B4C2006BDA2CE24FFBDA8613B2C5AA62B5
+BCED045B3BB89C5468213D249D7B287EAC7A04C5A0F14FB9CC9ECD8A62083EFD
+D9BE224860BC3044FA07E1E2FAD367C545DC5B73E1BA876520313A3A5D193EE9
+1B5B27FEFCB04D406B3212105841A1339ABAB9B0B0767608DEB2ED7048256DC5
+B98878CA93CAD7990F658A2DBA54048E4509D27BFD48032D93AB3765955F6D55
+4639275D229FEADA618AEC2239BB1DCE56D1A456EA658FF3D7B322F8266ADD38
+41B08B80904F650229709FE189C98071097143B9E532C3DA6BE556856CDE900B
+7583AF6C10CA85699B2447C2EF6591D0FA0074D810AA328170305E1F3562F2A3
+4538F0D0C56245C11ED240E316DFEF64FA1AF9C0E64BC86782F59DEECA197B4B
+EE38625921D4693B38B343466F10E4C9E0FB3DBB8CC417FA7696AF9603F732DD
+7E719B6A6BBE64F4FD78C4873890D867236D82E35ABF102129C9C9DCBF9715C6
+0E969DEAFBF9BB650B321CEBE6253183C2EFEF6B6BC28EBB6F28AFC57B22F83F
+AA928A5CA96DE41EB9B33C6297BC0BE1F63472AF7CC02721C31C314C704EEED7
+9ABEA57556FFD2B367D262950D0BC885F1FCC203C5833022484B72F5C59FEA3E
+8D2738B923349F0E44828DFBF4B9068C9DA80B141EA7C9506595B0A27A2DEF90
+EE785F8AC6F0629824F2F2585D22E6928304DB7A5CC8B3F5126D3EF00FED1C0F
+1AEE437ABA4200200849E5FB8A1B370B0092F0124E30A1086EFE05D0E03D3905
+A058FF054D2F6454D784BE414301CDCBF4FBE6E340A7AE8ADF3063E978C31686
+242E19A023BF5B0F5744E09CC2E855007C264E6CB13C9924E523301D7FD51D3D
+7CBEE8C1C4095007221DFA728507A079B62986817369E9A91D0221160A3F452A
+9B827DB0B0D5CA1C626CC7844BFD97C90F80C84AAD4D34A0AE7C75DC019A0E4A
+33ECC7E9F6B1F1678B1F0F3AC52DC46B8AFCD6C5FA88045F932CACDA8FF33598
+EC8066C6E997CDBB4613917C0B4043F8A481C62E18822B5C77A2911A8FBAB2BB
+3FD35514119214174C4DDB4CC6CE20BBE8B077A797F123B28EC55FAF52F65FFD
+B147280D82F362F1AC431DE0AF87E8A0C307D7B5E978340B606689EE5C3C8911
+CE65B607F02778A4BD54984EB3924420B0FC9D624B7B7166B455AABB0AB8A7C4
+EEB2F66A95DD2E72B249D83C84C3075FF365B26DDFB7AEACCF2A048BD8C80C41
+88E415BE80BD89F313F72C3BA490A720158607A71BF92A3885116A8A303B2121
+293946B1EC5A085F034E66B1BEAD4B859B733282192393C6E3D4CBD194153520
+FD429BFEF266BFDCEDF8762BED7B9F1E6A11F41FDE053DE22AC9F664DF870C30
+2E0089EDBFABF28CAB55B4F7B92C22F0DF152397107C2AAC18C9F4827AF0D2F1
+A1B1F8626AA8E6C52C612914E092E8C3002D25771522A1B37152CDDA553C1F2A
+44EF83429495A940A14DDA3E42B5CBC5AC55E652A7CD43195DE8803413A6E11C
+16342B090004266C7126B9576F68E071EB211BE824A154889F4FE2DED93896D6
+1C818FC3F9ACBC28D3D2CD47D94F685AFFBE83C045799F4A99C242A449A33CB1
+1BFFEE26334ADD624111FBBD9A4DA9049555FC1D05D3759F1C83E7BAB71467A1
+057064C94135C618CA08D98EB11A42EF8E4EEEE6BF436663D6C2173667B3BAFA
+77318803FA93C51971978661B06AE62F5A9C30C35F2E6D05334F0AFD94B9C84C
+9176E7DA1FAE09CD214EFB1DB44649474E3EC965F29ED5709CB721A1A17290B6
+B2FE92E7DA02FECA17A70382FB1970FF678BC4EB254638D9D60314C524AE5A74
+22AE09222246FC45237EFEC7D8E151CEFC63F734A626D896A47828940E76621B
+C4D734BBE10C116774A7C2E748AC2A893B34782F3CD9EB0C34079B72A170DE68
+8C56D67458FF6932BC6796BF521668136EDC5A4623B55F833E963D9AF91C697C
+85AC71E7DAECA138E9471C8535A8409122C466B7CF6F5BED3B154D055B79AB5A
+E8D5A6D4B11BF71B011265E411C2FA0162AEA0BDF7FF68FB60DFFD0E0A194E19
+B89E8CACEC175F92DEB8F634EBCC667CFB7FE47FFACF66990EFEFFBCCFABCD6F
+B675D4F8D6F870A595CB4F95EEDEF12BE1220BB16D798EE58A06F7AFAC00300C
+29CBDDED9CCC72972E4ECC095D5F2E0EC1890065F34A848491B128EB73F86204
+D5078938337EA05B8008CA3E57139408FB0B39C057C1939B78108F4C75322107
+79BD61078C393A7DB042F0DF344D6B0A8C914BF8829A156D1CDDE51EC65F6B7F
+A54828C7A71029343EC88D8CE8AF98DFB1B640CB1A2AB22C7721F72508D2179E
+667C8A5CC87E57E07BCF5BEADF7A8B836B536A83BA41D3D4AB541312D45613EF
+A083BE7926DD8BD006EC08FEC6D53DF6A281C79B82E3C5336B165511BD6AC6CF
+0621414F9F61863B5D147934BA875488FED09F1FD9867E35EEF0DC61776B0491
+B7838300390E43B8C7144EE6999D1EC1EC9188A9AAA33E5B67A1DE83552980A2
+359137C6A689F5C0601FAA09EF47C9BCC57DC2A72C2838762C1FD23D43434354
+6973357CD871FDC39C4D77C267DEA96BF9A9AE78A70CB709C4B928D77DB05C03
+FC8B0F504D948003DC9146762C510D21C144680F0A0A5203996CAF2936753AE4
+079E0CFDA5E03E6A482F11D663FC27D5E8B6A73B8EAABC3069C9B5D0B1E01909
+119B2560B70ADB2546F622D5596AF276B6003BDF456A3B4883648A1114191BC8
+585D0C2A712CC95CF5191413A5D3C4A4ABCD40F33ADC187997898C93AD946103
+862A8E8F7509BDF130BCD9696619181C19995A570EF3AC61827123212F96552F
+285D492510CE4C260F73B741EB8A881B139CF97922D2BEAA6EDB151343CB6DCE
+74FD202ED919C816AA6AECA20D31BA94A49FBF66AA299FE67806C51C7D4DC88E
+A0DF9311445C92AEEED1A21C264901D5F53A3259691E300A5E434F3B8F60763D
+CB45B35EAA8E3AD00C82E0AE79F6E59ED544D31EA5112EE1B256111832E3D780
+B222DCC2EAECC748CFD53413E7B7BF60EDD4558D17338F5DA099B2179B5E4859
+404C296C3FA92BD458D4A18894F15FBF42B1986E2A7BCF8C1D7C25C6F17DF170
+6DF76813852BA3CC16A0F9C54A836C75F392DAE45AFA57640BAABD459903ECB5
+1457F1E1AB898BF51FF34A578B13BF2C2192B3DA8C74197D10ECB0792E7FC57C
+688D13CD1D2B8FC04CC896E0F9CAB7C73F0B178B2B9B6069AE5D61581D6E4630
+342941000C556FA766664C9E4DF8ACD970A4E13498BD359F1F62CD7B59D6CF7D
+C5AB39CF1FEF04990E1B34C2B13C3073865999AAEC9931ECC6FD7E4505C2D0EE
+672A193FAB459F8051367C67C2F121CBE051CA9E9ECB45A31C41B5CBF7C83685
+B85C76EE1067EA62E6D77816601C4A936A4D5E1B3D966AE2307CB739F234DB7B
+AF00AF3B357EDBD5EC79D97688310803B58FDB85D85C669C4ACC6705BF1B8F52
+76B0D709DAA03610AD25727639EDB403278178D96C663569EF75642E0D89DAC8
+F3475DAF48C05E8475A010522D1DCAF78BD5E366CFD461524C5AEB0C6F8CF0B8
+BC08592C46ED2F6264988662330C62AF843EC740AFFDAB40567D85DD31B2D107
+C726AE7B36821421DE1559DFBBA7D8C11D537E944121EB2ABC28910FC4307084
+2321866C9EFBCA1A7EF9D77346E620B74FAFB3449AD4A31ADD0E6D7192FFF6A8
+44DC537CAB0EB595708290D7C91E3805EC664E3D0AA3152906A9EC957F2A57CB
+6EDDF1185D8EDA5D631A32EF2A7F2ADCE4F8FB15C3F8170EAD24B97803DFF358
+165D5C03528B1B92B9687DD0FF8E299A306D693C0220EC63C5AD9F515D0CFC78
+03DF3D714B670CE2C09020286E6C7F09A582FBDEA7F153CF37A748133F61283B
+537FE1BE8ADE8B468D8B68CBED4D2552F2C7A19B0E069A79F9FA5627FB57D024
+752893CFA39FF3ECAEC0F622908E683BBB50C76BC2815A46B5023C25120589BA
+00CE9F1E81EE2F0A448C235AA68A962789AF11E87F85FC6FE285079329D254AD
+DCDC4563BF6F82C76A27A512BACE3DFEC586ECD83D464ECF5499B1027BB3E71E
+60C31C77766B05B00B1833ADD7F9A83EE544A1EF42E4EBF7F5A7B82D0E318A8A
+03EB2D4DB9F9905D4B9A52BA9C5D1D2821821C57C8500866343A819380253D1B
+EE92F96EB2CCA3782DE6B16825ADF42B716154BCCE1106C1201C00360DBA1F8D
+01FCB2B57137491C17A17A7B1D3D1AB4F70BD5CC4572FE37E2E2CB4EA578CC8F
+69892616306B8598456B8F345FD49F58223C8D1B00752F6CE0D278277B3DABBA
+97977264D53A95A034E3BF891ACC165E0898D569E9DD9EB9A21F5ACE628FE6CB
+115DC17AE728337C4A184151A954B7C5F6D0A872CE9929A13040CD1D8DD92560
+B8D58CC3EB8E025AC7A9400FB7D8A827F7BE4C56EA930029ADF44078BC5EA389
+5782B7A3B04256B66CA866B65A2BD0A4300481ED9EF898A4881189C55FBB2B0D
+C371EAB5DC9294E2BE1F68DC70CEE16B7B4427AFEDEAA8C420B63AC524E5AAAB
+1C0504A2E9C5E601831FD84DA7C7A78FAE4660D1AADC38578A2929E6C00F611B
+FA966D3490191EB437C2042B2EF87A493D1D184AD79550D817830C0C680B75A4
+5946ED1B46E5D26946AEE0057BDB4BE9B23884B839890E8ACD3F55608B7B68E2
+27B57A662DE621F1CF6AD89EF74D8FE1FBF42A95D2EF01ED6DEC83E659A36106
+8320126AE91C2A2051FCA141BDD3FFF477E674916E058BBC0428879C81ED9914
+E83B9C47920BABC636ECDD8C59A1ADAD12C384EFE8860DC8DE04DD8F7ADE8942
+CA3CF4CCB9EC7A0372A5FA7364026286086B463383C07AEC413D6A0415E6FCD2
+7A96973CA85B116134B41C8F120B557E43F38D21432885394F0C83602276BDCD
+7A2AF8A16D0CA4FAC497CE0FE1D19CA1D40F314CC872FCDDE3F330D5C6342C8D
+4CB634ED156D7D5B0468DC981706E775E5D5D23F1F0EB7B1CAC12833B8CF7D15
+A8CC34E07DE0CBFB425A50E22B79BA064C25A31596B95132D0B597561B2986FF
+2DDAC35CA3FB7F46659D721EA243793EC3BFF6BE5074DFCBC0B68FBCCB456D73
+47FECB042B1A1D7E1C290CBE8EC065E43B0C2805E225CA2F9967FEE8AB286D34
+02ECBD45D4A1EF6760EAB45362D09D245BB24249FAF120B797AD8A0173C6238C
+BE9824BFCEEE1DB6F05C8930819DE5F4CE87A8AF60DA79F5E53F18F51EA056C7
+D27B63845393F348A36B76859AA36C506EC5FC1419AB11CC41CD53D11360B23B
+8D520B860742104EB334F0D4BD01C94E654ACD4E7D88479D225530353FB67F64
+9865A97A10BEF98CB97CA3A3C9353F23F939FF98032E1AA6277536193A94739E
+35419AEC8D6CB44E85999A042E19EB1E6E4048323224760F610C8BF0E376F341
+2AC4CE2A52ED4551695F949FCB3C618E90FEF1392141B57A7B19CCFB57208A61
+C0F6940C9757BAA58102DBABC4780BCFCFCE8EA3CD9722FBF6BA55A4A6993A30
+325B2B9A0AD91CF8DF367CB979FFD4631634371853E3A5921069D464ED85E350
+6FBD46403428E74FAD68A324FAF8D13E896F336901795D71E5D2DB89E889C1BE
+C522FEB36C61D7E0E4B1B0EC693A0CFE4107647615051CCBB7DC16E97AD1BA35
+CE9A096DFF39786C33DA44E00552A2804A59841C5C22B18AC531BB9C0115F96A
+6956067574A462E428A5B43947EACB821D5215D5BFFFEA5279ACB6C5A31AE4E5
+0C02FB488E26606B36F1EEE1438372B7316154F65894F5C5E822C5631EB39AF5
+4651F131149F16F47567F97BD833D5BF3A8286814A8D73CDDEFA00A0EE22B5CF
+83499201F787F87DC5173DB57C12CAFDDFA8FE2953A4C336F13B2CEDB2315BD0
+0D4D63BF1818958DE6CE23B8ADDC55BAB29E1FD39DE94E047807FF791E40C68C
+573EDF6D22A0C6975AABC854543627201D22D817121BBDCD9F5BB0288F04940D
+C663CE143603B41392303A955A90CDA082899ECB1BA3591EF47E6AD1B5DCCB3E
+E6E68CD54310D21A0E809E957E6957D0004DCC386BC45526051094D82A2ECC32
+BE893DD5D32981AC1C3E5078EBF8CF2A0828B5B1719CF3120A6C767FAFFE68A3
+B57B6B5E1DF30B714EF791BB3C9B3D5D4BA21D33B3A81EB77757A3BCF842E15F
+1648EEC4655E10DBD61F2FAC6E96B96271B33B5E58E7CD380564822CD380BB52
+2E63097B912F140205926D11424378B8F134A85731B897747B128B7770B65A98
+1D8A8F2582E83F2E7BC0140074E1BDF96D5D8B16872ACA21BBCE43C52C68A331
+D491CA8AF687AA57BE80FF6F040335299E86BF7CFB26715E822384C7D2014281
+960A0C79CC7E77E4D6CFF0F5B2475E529BBE3464729B6A33DDFE36D26FABD8AD
+BF09C5599E1E33170C6AF8367342360E73681AAF946D42A3B661B0BABC9A3874
+BBDCBF3AA7C134D0ED3CADCCDCA0260E0213C3CD82173B8F544073B535E2C2D3
+D837416D51BE7FACE789B72BB3520FA7C8C80F52BF42C1862B309775540F6957
+1FDD0D5D6E4CCA987FF11577F6EDF7B3F044D3995BCE794CCCC129CF0BE7195F
+0F831289C1BB3C5C796F190138F0079F50C894021C27FA48D1FF4D1472DEE1BA
+EFAE61AEFDFE4F8C28528A32EB41B392E09BE386988BB4E92A83B1D833AA9A52
+2D2768D56EA0066017954EB9FCB2766BC8EA0F5A1BBDE25D548DF19CBA4A3A36
+28592831BDBFF6A7BC98AB965375A1316672FBD75D5D524B5283DBAD1084BC8D
+795EA03214D8F931BF336CB1520E3009C231734688AEEC98BBDF173C8FFA7DC5
+5F23ECE810811B1385BE7E7AF5B2974E7D80A1C86FC88BD6CC6A815B773EDBE2
+48BA5C3D8918C8F5E53F65605A574CDF99C7B29E72AA548C07EE3B1748D74F39
+0E201ABE1B36F9B7F11CA7B2869B7428C05BAB0E61D8CCCC3BBB497A5AAA2A72
+817CE375C1E68799649C6D6BF1E0CEE7974CB24DB8BFA82B786C87090347DF43
+A10532DFB6115038479591C3891293C22B33275976D269F5FC003984E815600A
+52940610447150D5BBDBBEFE6EFFB653C8A1DFE1115FBFD129FFE94825F247A1
+9F4307B13CEBE73596960D611B9E6D50B6ADE781FA381C48A73B47E2528B7D78
+2336BDA5F55CFBD3DEAECCEC9282C72D4BD3FEC0B6BEB5FADEE8D3126F7E8017
+38324C6C61677676006D66782B3D0E707126C40F8EED0180F527608176E29EED
+28E61C15BAE9D007C88B309530C5CE5753A568E0C94C1A4869D5457C9D043C2B
+157ED1C5EC2739A93755DD6FB02B92A5473FAD0F0B0C3341CAEDAE18E54EC140
+7A5B7A00721E495AB860EBA8DC36F25DEAC79B8DB57A7831B0542022315F34B4
+AD4A237617A221B09D92F934CE82405FB48564BAD05C3009AFA4D011161474D6
+2265A735E34607D45E6ED94D94FB1C901D6B4D6F4977B9BDAF1CECE6C8B65193
+C4743502A005ABF094249DEEDBD34B49810D69AD90CA0D950760E6D6AD8124BA
+A4DB0FA3394C7A6F9435B324C119D9AB4FF2A41E9C619F31DFF1FC22387D42E4
+3FA8DA47519DC003870486A139AC7CE1DA52B927679BD382975CEC601F1B01E6
+5ACFF335B326D80C6E6586C7677C4B148CDB3609248B3437CA43106C863C98F5
+0713644D81BAF67F2F1F3B3D67BE586B693F93609BE34A9CE769FD2FAC80A0FC
+68C5B10E148D1616939CE8D1AFDE025F8238C81963A5203128755DC399CFBC49
+AD4A8F08BBD20578151349A9FFE1D422DD1FACDD93466F228BEFAEA33E973A1F
+511028CAE3137DC36E99FED6C3719F5B0A8960AB6911000B18B0888226B76C02
+B77027A97C15D7553C3B71BDB62B5A78178C2F02276873B49438B3E854BAAA5E
+EF0A1B9D12B7E206E369F9E33EBB6A9F863101E72CC2832DF567A87F7452D5A0
+61F2177BD31C6D731AF564D1C0F058BF75E0B6C0AC24202B56AE2F100FB9D469
+4391D5B16874F1A5E4F0EE8FDA0E36B339D2D42D270F63EED284617670E01324
+D38D4EF3E92180A4F8DC2604B9189504D0FCC1F8394425810DD1BC4D233E89C8
+8284BCF502AFFF66A54E738F3BEFA7B4F51AF9C35575B1DC1EE6D922F0A09E82
+EE454ADBBD1DC0992470B0764332E312E2A3764217B502A9497274C5E2F13316
+46ACECBF93952AF579854CE0AAEDFE42584E216A93181861B66BC49D81FDD7D8
+3FA8FB05503F861A69254A5E21EB6CFF8855E7D08AF2B2D161A2328244F285D0
+E7876EC603CE837EDE0971AAA9BCAFB86329955E5F1F78A00E521CBEB22363A4
+142BDF69D408358C7C4D4E2E1ACF9CA11B72481B97F9231644988EFE3CA45659
+2655999007B7F4DA9EDDB47352519333815A28A5A53BEB5379D699CE73A0F6ED
+31156A41750753C3EB3EA6CB382BDC17702086C6C750286610CC7B0ED2009AF8
+BFA6460E643F88AF1A71744E2F42F92A6D5D0BD7FB2EEDE8EC854FCAB94242C1
+65634B2D10117CAAC9DB5CDEE681EFFE140810F7C9182162479C257972AA398A
+9B8B40286F9ECE6863CFAA33EEE37A20EBFB28403448D0019B99CE76655AE359
+E97D1B26861C4F8E0E17D5836D4AACF4F05AEC01EB12F45EA2964C6614FBD903
+FE930D67C83FA691F8F8241725F61356093B99C1E3F61BD69D63B13F748603F3
+BA9ACAE25A5820FC771547F1FC8EDAC3CBDA4D27C2E76F6A567B297081C51274
+29CDF072F62DE0B06096C7891F8A13542F44561DBF4E6179BFF1414A4919679E
+35E819B8655DC254C734B0471F61702D79E7D8D79861331A12CBDC0D1DF4472B
+0972AF27F184126C5CC24B5991549CCD9569C5E6A2536031E1BAD8D74DFB26F9
+F1B239267E44799A41C516D9949B03C76D2E4FF02B4018035C5DE91E7376452E
+D0A29D4E590CD69E3795AABF23DFB3B4A1C392F181CE6AE333C7DDF355307A12
+9FF9A1E357E5A8F0FBFB70406B2113BD7D404E6D7BABE8AB8D027A217E907C0B
+9D322F2B50F27AAA7E6DE95A14F16E61762ABADD2B2DB1BCE1A45AEBB423A63B
+2B64F2FA0B96FE37835F73A03358C755D55A86FA70E67E9CEB034F770E89FD48
+C41CE3D76FEB3EE18935DDF3A9251901FE9DA8F937F891EE181648F5A09E6AC2
+9317F5572856F1C8F1D90D6DC4E9CAB3869B6C30CCC58FE4F385FA5D01E5A1FF
+DA826AB7DF0D3EFEA10DB987D44DBC2E21E1F2FE3521CC3C1AC942FA5359B66D
+866CE1B7FE969A6F6C4F6E231DD9878D4EF3A166AE196F3A624E3E840DF4C948
+BFB315FC68F1F395278E6C3422930BC8D7AA293071B9F5ACCF3477FD797B2113
+A6605074CEC01253A75BF1E582D72E1766F72CE250AA62EFE25AB512C662ED23
+EB6FB19FDFC936D65668D143E7B63947FC50DCFFE5E3D825D15C0142FD17A550
+E6CE5DE77C765DC44866C8C85D0979F754B79C7C1BA57A45B2138B5A0D8722B3
+FCE9EC0915226AC5FA06C8DEAFCF132112010716D00BAA9EC84FAB149A86457F
+DAD83AD440A6D8802C2EC016E04E12BF6EE9B27AE6DCA0E047BD0767696D652A
+99F49C6E9472846023B7464E28B040FBC493BFFB443773A4DFF73A6464CCC43E
+3F3974DDE181F162A1E0F7C28D1EDB267E52F007212A82FD71432249749CEEC7
+F7027492F0C4AABCB20E217F76EB7F3F16B92875438271C88149B62961A97467
+9019EEA80E7B91AA608A9699BBED43FE5A937AFE62613BB7FFD4D55B123AEDBF
+A8C4FF6F88BB1DD3E42C16116CD63B6D4B47C6669233686B24DE774DE4E5567D
+AE75B64D89EF449AAAF1DC34CC9B5F6A1B380F2B65F8E4481956C911B241C439
+3CFF801B0BECC2F742E3F8DBFA7657B6BCA33A739913620843C97F94510AE3EE
+69DCADEE2775FECDA97B4AA73003413EB63971C06A435F6022D8DB74370D8AAB
+AAAA704DE82D50093BF6633F2649898ED33AF613B3BF7574C8BB76621A902E21
+7BF8AC2158FEFC7BC768F60084F4C3BBA86ACEAE575029EA1935F85B2E4E2B33
+3A176338F92F5CD578B1B90F2045B2104F62E845349B82784075F00A82085666
+014F7E804AB0718397CCCFA9328348FE44020223C6B9E4E1B8E688837A7DFA5F
+97ADA785FF999836256593D27B46075E90C58222CF1C22E4478004E1924F66F1
+EAF37DF7C9EEA1248EA56DC46DD0D126939A26F6B772340D6DA5F167BD75F994
+CA180309B1FCEDE0476F73C130A78A568E37B714B3B6A76BEB0C2E750F2B51D5
+295291010DC84842BDB34B1F969382FC41980ED8CFDD2ADD0202C7305C9EA4D0
+0E35D71C82B359B23A2F05
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
/FontMatrix [0.001 0 0 0.001 0 0] readonly def
/Encoding 256 array
0 1 255 {1 index exch /.notdef put} for
-dup 12 /fi put
dup 18 /grave put
dup 19 /acute put
-dup 39 /quoteright put
dup 45 /hyphen put
+dup 46 /period put
+dup 65 /A put
+dup 67 /C put
+dup 68 /D put
+dup 69 /E put
+dup 70 /F put
+dup 73 /I put
+dup 76 /L put
+dup 79 /O put
+dup 80 /P put
+dup 81 /Q put
+dup 82 /R put
+dup 83 /S put
+dup 84 /T put
dup 97 /a put
dup 98 /b put
dup 99 /c put
dup 103 /g put
dup 104 /h put
dup 105 /i put
+dup 106 /j put
dup 108 /l put
dup 109 /m put
dup 110 /n put
ADCDA19D5CC68A7BC7108EC9236C64205B23CE68B9BC38EF3E5BF9E0E6ADF404
7365C8D0436609438C82EEB2F356F79186DDF6C1C797D3C278108B1767D15178
C4C3E8ADC2482BAB9536AE8419E5CF3EE1B6E53BDCE2A83E2E485F496A562C10
-B3F5A131BB19D1E5414C86C5F995521076340536E10613E42779FA15EFDB451F
-53495CE8EFF239E4EC442E1439594549D45F5276F93D496C9AC712D762D0B702
-E894290BA028837304AFDDD8BAA6564E9DC307A14A7A206550FADDC7784DE3BF
-3390188BBCDDD929C82B1D7B529553BA75ACF5B385D31EE3902D96B2B5DDFFF1
-9F0F90FD791E54128C1717F313486896868A34FAFF22E23CEF046D02C1419BA3
-4389DED48DFDE7F78F8ABE3DA17968B0F16B18FE6B2EBCD7AD10CFEE23F4FD29
-8A41D3A84F49D6E0FE4A09C10E3BCFE4F1A53382F091A731F635DD00B2BAED74
-7091CDEEBF7C3B0C788EF6655601AF98D99CD87AB81537AF653AA1FB224DBCDA
-DCD99CCC347394C8A7146C0B6569E9C29445CDF0496D40D131862E66385569F1
-CCEC1D679D7D953BFD1172269492334C2E6F7AD2BB25D7875C848C4B712A6052
-465591F6EFFDF950BE484A6AF5D9F494135CFE0EFD1C7EA1C547135B7D12B9A6
-901F5B83A629DD6EB776B471D17FE8CAF7D7771D6CFC5C6E363B2B587D84884C
-35F40A0849067A7301255601CCC91F5E6AD802A556B64BE5196D6E49187E2D31
-5CFA0C960323B525F540281C33DC25A2B35103E58126D0A94B0B082C0644DD51
-6E248FB659F3F64E23C70187AA9B105C83A2E1C75FAA7B662398E31E261E409F
-DD3F844F2E3934CB26B79325ED4BA70C1B83B46E7EE9E9A5EC5E4858DB79FB93
-31BEC9C8842BFD56A981DD5C91D20A1C18A3B405098B7191F24E27BE212FAE84
-B755CE91CBFBBD5FE26B94C62565DA0C491F1EDD77F677D8F88943E77EEBA9BD
-3F7D4FCA7141CAE4509375D97E22E336426D347AB3C81C92D2FFACF867EAFB4F
-4D4FD4C9902B18C705A5A910906B813E3B8DA20E13436DB8FEA194C9BF6FF0A5
-79F215F8A325BB7C71B2B3C64DF8AFF3B99539618847240A1EEA99B1CAB2E869
-5D82993A88B36729258072E7636BA88877AC34AD86278760EAC5CFC573B851D2
-DA420D86CF6A178DB28BA30EAEE41C16E360F24AB5177775314DE2752078E256
-3B5ED507F043BC332BF738175950EF89524D104A05844CC7313E12F53148F536
-B912D04FBCDC093E8D3031EA91DBFD55FCB7AD49C4106039CA8324B46664EE2D
-AF927B27CB0064E7279335EE3B7A06E3FF4DD40BC5ECCE94526CE4E5824EF067
-8F1BA68D41F64355123DBE4587F9580B90EAF8889916255DBC1859EBA7DFBE08
-A79EF5063A85144AB250DEFDC13BAACBCBDA771FD5180495A27C118705AEB569
-EB317643A1CEE5BD68582FC77B776018AA68F3B49921F2D4F2A9306AFD8254CF
-DED8E8C338D73A92559BA064F446348FDC70CBBE12C19AF9993AD81E2BF60EC9
-D2BA72038862AA2CA5BD3CA0A4DEE85A7ADE4DF9ACE0AE57401C1C5711E7ADFD
-6EF5865DD053EE4DD7070F2C15E58331928581D26E08FEB08F9F0F4E45CB6552
-BC8FE3AA01BCD8166A7ED3785DA0D892AC25CC0493E6865E067D700AC8D7FF71
-E85743C6BD1A28FC0BEA869D6E1294BE31636B10D44EBA9A20041B5B38A91781
-A7BFD8C63D5484628F63A10E3549680F1556174B464AFF2BD948B3F9F0BCC6A0
-6D32B6256E3CBEC23B0E711C77CE83BA6776B3A88079BD445220FCCC063DF188
-666FDDD6E5B29CCBD94E6F91930B823F0E2EEB7CECAED29E49367BC10ED266B5
-FEC76C56C015325F38A9E81A02F0B622F419B6F1B8DD26EF8A79E5AF1566A6F5
-047DA4C8018B6B4F85099257E396D7A7DDB0B5658B30DEE6F7275E96A74A834F
-FF7635C53CD29598D31878807D9B45AFCDA4DE957F7625264F9726F0338A5EB0
-C4E20F06FD63C955A76B9C29D132CE9329B3E9DDC296F181FFB9A3F0E0FF5AC7
-50B3FD0CE1DEAC78BBE0F7FF36C077073733C172A9D69630550C3867EA1513EC
-E86F3570EA3F2CFF00F062A5C43CA182FD8338A84725CFD6A8EA43535A117147
-8313EFFFE803E979588EF489B57D208263A2659DDAB9B10517E8960098C55CB3
-FC75BD9087C2D216EAE0AE6146EC8D46B2004A91475C479FD547EE6361D54C69
-151C27346F8762EFD9D7C9970FE5F95CB91FB1DF6D51BDA86E20A97BBDD50456
-45A8EDB16CABD82E799FF6615B9D253A759CF40C128228C91F76766B639C39FB
-51584440E2B4B244507F6E5C1463C51C0EE65F43D8D70EC70B5A35D72F27CDA1
-917A4140B001E09753821E6E21A1AA9B79217738D46B1674C8B5785F4C2DFD25
-F0E4217731E193689141A6717A9B082A286F5B4CDF69A9CD4C1B11A5458F950E
-EC98E7CA3A7CD47433E7FC3498BC87569B77D2F7F1B0CC8B2D89C8F8F1A61210
-2571FECEE954C25E8648A1846B7AB78BB480C4335B4909F7E4714D7FBE685819
-9D553693EF13B078A52DB3BD35ED2271E5192C8655E2234C5EECE3B2F3C88D93
-5C76E91D41142207C159D436BDC85CD92B8FE60C70B6548344B86CC0111B9240
-11264BA8840DAA7F9C8E4F9854483EF2E5427CB33238662072DCB5066C35BD50
-277D1C70D40C5E9193D1648ECA0BB14C97A8ECD307D4784172F01AB199B6C063
-18E1C3D0D6C9244FBF4CEE66F61927A4665328AAB04B54B8F72E32802F7A7AFE
-B3315F861EB792631311EF7BE4C6A51304A64A18EBB6FD5F91C7D03ACA610A42
-4BAF1B226A832260EC3F01BFFCC5A298F6C97627A53671DB6EFFB49887CB52C7
-77FE04A8D8D5D3FB29CF07DD5D4546F99976A094332DE0D32CD2B0D44CD3E08A
-34051768EE542AE3270EE41E90A43BA8472D3A885EF092F27FEDD89F7035A71E
-74A96DE0F2FBD2E0FEE9EEB3ECE80A34C82E5A0DF1EE927F770BB060EB0227B2
-96DB5C72B9A7F4B53E0EAE8B9969D01A7CE1BD52E7BF71A51ACC22652D0918C7
-D6B79652005A265DAD3064E6305B670697C2961ED5C100B0DA023EDB53A878F4
-A9EECE828BE0A7E85D77694AFC91B7A825A3A5C25814600E29E1CD989D40AC09
-62049BB173DE969AF70CF08439D5F840CC9F0149F161E859DE30DF86295EB75B
-DB6F7B93F0CB2A2F8DF8FB708A29FD40F540638643128CF96E53C598CE78E124
-30CBE72FD0D2CC6FE7296E0B47FBE0236691C94283825E5880DD1877F706BE86
-887C210212C135B2242B2A62C030C5619D69A898703926F5043A4B65E22599D2
-1D483EDE6B124C4A7007758E5737F73477A737FB8B6D79566CCA600FFE07EC87
-E9AACE05613BCD96D6ED09754507A215543A64A0060D7A1EC5A062A7BE402B42
-7DA16E0A8D9A0C3D4709AD82BF4E6D7E765E0B7A11975F93B4C2299974700AFC
-37F6AF965B5F032A18ED2F380A1C729FB93473A790BD2847C539D5216A48B5AB
-CA6BECB511A9B3627E0589BB14B4C59A34B92D33C36F841A31418EBC3CD9097F
-4AADBC0B100EDB7C0882011FC4E5BF076A276E9BD73AF9AF03E0FD1571B67619
-41F083C1B635E7ABE2ED2D16E2A2B4BF136573EDB22CC84C3BEEF12A909DFE87
-6B31DB8CEDA2C56BD4BED3396C2414AF33443AEDE115B8B534BA437C706A1102
-367F7C8A24BB17DEB45637DA133D471ECA61A811828B1056035BB030D76693A6
-E57916EE9558B54F30BF79DBBDBB5B687CE6837001D7C79F2293E9DCDE4E02BE
-D9229D53F9710BE6247844285B8CF784A2DD33E1B0EB55A609E8969629939431
-14A2923ED9F6F0BFC0ACA17F1B84D71C101F8C8CC567BE97AB624AAA595624EF
-291EE9D09635175A210E5D2304EC26003D4D3734B80C513A3954195B4DDAF78B
-9D6B057C4D9975E499FEBCD2BE7AB15A7A3BE374B0EF6B2F4A4CBA22C12E1A5B
-6152F372610BFF631879CE5C46B901C5DE1ACD01E95A6003CBCFCEFC8E2B1732
-B928061BCBF980C94D0526028B345D1884934E20101B94BE6DB4AB24ED2584EF
-716B8C89CE23037A03B20407E6915E3F2045666C502B0EA31088C0E98C07BB06
-74A43F4C9F42B266F034AC47DDEC907CB418AEA343A269ED16B20CC413F6D54A
-DA073AFB184F38E75A591EF20F3A44E0CB7EB72B743DE3F68499FB8FBDF113DD
-A37F3B293BD769160E25EF9F865D4E3A09BDE492969976400D8678B2327E53FF
-7288305E48C52019AE3E10AB8C39B733709D252071DE1B31A0EC52388BD7A7E0
-139BD484E918CA0E7F84677E0BF5CCCE41DAB8D1915AE5ABF459512FEBA6E812
-9E0236E0B3C297EE0F8D9C1880D3A025C644E57587DCC946259572A56D677C74
-692B22FB760450EF1613BAE42ECEE1895D5F0A7E093411E32D94043D80E9BF74
-E593D6903A90E0783A9D3D0629EE09C57249AC15C6328A794DB90F101690975C
-1B71BB7373CDD9490929A0134123F2F2C7BC3E5CFC2630CF750B431F79E169F0
-51368B6D9DA46C51A1F58D23C0BEC423A5B22D2BCDE8DBED4AE8F4CA140366EB
-326DE1D323A00C972CAC9082DFC1371B734A4F9D7A1511E3F358AFEFC0B706C7
-EA097CFB7B75132254B71679529736E924634665AF1D59E715F5213B85FB9F21
-AB464B075A6B21D38D7A30C8CE6FB42EA5027D797AB624FF5C030E4E573C3850
-1576440177AB823975FA4E7717A83A6C8CF505EB87D600CDF2C244C2A7099B76
-F7395B17B11BA42FE59D21F536D610013B6442B763BD4E6A0E4EDFD85ACE222C
-316A72B96397D1677685D05A8182924CD1A5F62AFFC96CD48EA13C681BA30C3F
-7A8FFF741660E5282509FBB27F458474DBC8ED61532639FDE02F09551A528477
-67F835B60970E3CDB8BFD2C7CA6C40766EB970B8727EA4E84F155719D72522D6
-F65ECA369A4DE5D2901D917A8366A8FAC729832F9EF2C366A081BB8949195659
-5D8DA8C6C500A586CEAE897838B70FA4AD8A2EFB853F0F152300BEC2817DE405
-DAE424D033AD5474833B7E2AEEE111945B3509682CB43181C700B9B8614C89AE
-092F35DA753FC1958D33B502D79642102FE39CA8E49E2FC41B42C9E59ED30A51
-2E4ED2BA8314B0BEE4038F502F1426583764F1D76EEB8FCFABFC3CB1FB9AA7F3
-3B4C0CAB83BD6BEA40A571983106BB5C45DC01FFC7476374F490F532F4A23902
-984074FDDA5999D514349A0CAE401D217CB409E0EA162092B994A13BB9BF71E3
-F6D31948FD15659A2D41E539459A0859E493E4A056047C2B12F815A139B9167F
-35BBA840C7A8BC855D540975079E36D6416728E3A35B0E44EA0F1591E2C87923
-E7FBFF2BAF159995983DD2A4B2FB442E65EAE256A32519AB2979A26A4A1DA2DB
-07920A95715CE7F596EFC8B87BE04C219B81D226C53AE2881B59FD4B707D87A4
-19E6BB5074C6CC349F8403F4E1C476B3A0C2E9337305884E4D25B1B57C2759F5
-389E3BDD519400E15C42B354B2EB179F2AB56AD88E5A018418C96BA0E5A3329D
-11725544AE1E0A22385B8EAE9E97CD5C8F117E4AD6155CC8562E524C72EB1CC0
-0D1C3CB2D24F3923E4BAA25EDC460E352F6D0AEE708BF39CE2D49A002B0D2314
-0787BBBA0427C9A1C799F4626793548E3175DD94B21BCEFD89A3E835F6240C82
-5AAC975B09B07CE13E37650A059F6F1B946E110A1AB1F05AD53CB0A8D522B439
-0B289DBBAAD637EA95ADC68A7E893F0186B66234486C718684D2E72D56FDDDC6
-A387F296CEBC
+B3F5A131BB19D1E5414C86C5F995521076340536E10613E427782B91F1098562
+3E22288F48ADE6EFA58CAEBE7C070A920C3A85F4327940DBD99179C26E3ABF17
+64E9CC6A45F17F19F3EC1C53B17485B813CB01915D55CA2034552666D5E44A96
+A0FAE064F599AEF095CA1816F7066EF0AFB220FE1DF11FAFD503505C5E6793A2
+6475E95FB467E2F3B5E7C6663A70B15698A1D158E23D3ABE3B6942B24832AC3C
+13F258038DDF209525C4124806A369ADB0423C2FD0F823AE3056F380B7128089
+689FD64442104C476657434FCEB87CF0F30CF5789B430398617359FFD974BFFA
+C9C55ACD601AC6CB8E97FA11DF303EA517BA2CFC359C6D59FF2B72CBB5ED34B9
+122E5487989CAB13A4F8B1CA24C5CB7D889EB8988CD8DD846275F32B2ECD3DE0
+C8B47765B1346D707BDC6F26F1465D16591D53D578D0D5F512A03AF4A269C1BF
+7F1E3A4BFDE928BB48E512AB8DA01383475C57E9DFCC800FCD9FD4960D8ED405
+5C52D648C91432144AAF7FFB4EA13AA3AD6C5FAC5EEBDA0A6C801AF3BF21C422
+1B53FD169F2029E4552DFEF4D27C08A8EDFDCCB4BCD1226A4CBDF6D50996DE87
+31E1D72A3BB7A51CBB36FC6EFDB1C50DBBB498DBE73AB31C9992D92A2A863068
+CEBDDE3A09A6367EC9FDAE330A18646B4745A247B1586BF2FDC18B5346053661
+142830C0AC11CEE134CA6BE6B115E4BFD14E2F323F421CFBD6DABBC49C10C62A
+5DC30DC5627FD5A938F4D92C0BC873AC16368841B1C0F060FE56E10C506F32B7
+C784DD1EB21A0C8A7A08C672B98FCB3C2491C16AFBE620BA1E860438C0E0C934
+630CB619FCECC748C516B2490F38A29FED7CB7C505EBD7134C800CD1A45983A7
+D4345E6D2E6498E11CA3AE5EBB3E579C9B78A771CEED32F8BA3946551C7A15AB
+B578BCAF25BC80D9A0169B6A547D08D677678EB3D287AA32683135802A365CB2
+E4A9CCF44EB215EB95140325F1ED1B4951503D94E933B2B4A6C015DC84D12D33
+0FC7F804048C1362A91CD1367234E78DE55E08F6284F5EA65AD6A7ECF7CDA406
+02E530FE9CA3FD79BDE8FA2BDE763BBAA80F9835A4C9B14CD83BA6FD1F9D7E41
+6C5EFF4AEB41E179FBC4910D123E188AC24C26FE3C2D0065362A87A85CAFA1BF
+15B1A3284F52CD24A5039FA47A73D5B194E13190C94B9FBD18ACD58615666B11
+A686542019874F1E962D034326FEDE4AAF12E30E6CC751E9662FB53CA195627F
+B5C5BA1ED33AA3B2A684CB5452F0143DC25FA2EE16F9C68F5FD204693634E0EC
+AAF0DCBC8799BE01436AE26C7A918C7BD57B2589DF0CB21D0857799D50173D86
+BE3F59E3EA5CDDCB394A25860968093C6FCDF1D9E38DBD1033741204581983EE
+84604B3E0B9C882BDF8C6AB648B1D7617D2181EFDFD8AB7EF075220132E2C411
+439C3D2076D357609E0457FAB333BC289FA0D62088918A9C4867C9CD0C8AB332
+D8FC119FFB5D3531F1A6514C26A77B874DA7B98BEB6AC6C6BDBCECEDBA06C64F
+0E435FA63F2995E724E64128C6783E90300471E3D2C73EB4BD9EFE28866783BB
+93EC0A04D79338D479472669D86AE46792645D807F3FE4AA131CF93B3A3694E2
+FEDE40F4D77EC29732DC4F180BA4ACB87B17423970F9762FFA065F92C6FC7F03
+1D344E46F85BB06AD98A0A9B5F22B801D20400A3D03557679D9983CACF51BA79
+23A12B9C7A67D67CAF0D66A5B92C3A29B3A108C0FD4505BA363D5D7E4AC391B0
+61CD6882B16229BB5F5DA3CC73797C26444581E5D86C54D074457B19AF1E128C
+CEA50A2C106880FFAE35EF7D569F605340B5A3C8F5B78EC715C16AD8959FF4DE
+414856AE8759D93F24D1E654E5573D3089AEEAA55543E1CC25EDEC8D9AA0A47D
+271898ECE2DAD982E6258E9F8B141FB24DAB69B81D4094448713E7C80E4CFAD5
+2D6916759C7C3A017EF5489E59F7EC5976624F323D3454A245ED85A524DF97F4
+54BDA55F8EFD5F4FA9E8E44B36AEB06683C833AAA8C389C01F16A858E08344E3
+F28EE5B7E3F4EF408A0ECBA488586625D5CB1E0D24A15F7681E36A9A3EB9B9F3
+DA6CCC03AAEDDFD1DE8791C4E02D761A512E8AAD6D1E242A08311F9DAD1D5F6E
+8A06222B37D6CCC39C933999CABF6B869D435B4AA756C1656CE6423656687802
+5B1DE7605BFB98CC7EC1EE979755D03D03B6C9474D5805AF57700CFFA0B9B11E
+2D2D8D3A1AA58B8CF1F46490DD73EEA13BDCEB20B5C77D1873603D6D58E33767
+DC96E98E630B2DBA7E950AD83A079712C83BE73CBD713B00EBDD425B239E2502
+9E740ED172EE1FF63233FE13E39BB7EC8E02CCBBBAF6A25DE4F3425FA6BB44B4
+C624457A474E11C05CDBC95F9850969D70FE4A84B7A096A405EB3E5EE73DD3BD
+503919AD5C3B172B51C3949FF98A0FA529F1626D3F2B43CCC04E25B16511AFA2
+E89B2E9B0ED36B5DC6DD312D5B484346900F13FCB9F3C2EAC4C431354198A9C2
+0D1D2C1B4AB8287924F7DF929AF1E48EAC6680502FBCA923EAB6CC8E23A72C19
+695F0BB856501390E2821240F33387EB1D6147D16FEC72FEE6576CA2D507E373
+986BE6DD8782A3F5257A73BEDA19539FD32F04418AE9F4AE280DB489C5D5BA6C
+5DAD0C27E45ED27A560661B46A0ECEBBB3BBAD32D4A2E0E24366FA4ACBB3C279
+1006F6DE15EBEC7456CEDD9ACDAD1987708D2C2EFB33A301AA3AC385CA9089D0
+7D4967C96DB76DDBF88DE16D584F39DEE45DF11FFABF92FA43E92094BA6FB14D
+45C80C976B3E6879AE21B193C3D3398C93895EFB1A943927448042BED0A8E0E4
+64E308D01C9A7B2CAF8867F330894A5ACC8D6A53A5CD1D662934A8568D1987E4
+45A973B0F6096FDFFDFEF6CA327C158C3B4F403184C401CEB9F21B98A037EEF6
+73F0426639A2247BC855A1BF95241A0F002B6DA615060DA8136AF02A07F85FA2
+A8C3418F306B5EEF8E10FCE51AFBF9AF2913D44A88567A6C7DD8E094F317DBFB
+8A2E014C2B5E0CB5632E598B5F5E05322C33C6FC4BB38DCB53D2F05C36B470B5
+21491F0FB127730D42662DDFC9ADF12AFACA3050FCBB5D4B2D632910ED76316D
+4DD15B50524AD795981EC4EA9FED7A8359A0656C8CC97CF8B6C93B31FAC0AD89
+4B2B6426C44BA13CCBC90D945DF35373DBB98239B0996E74A27E1D0A03DD6DE2
+13899C0EBB143F47C81AD18747E491E831DC5F400B2B15AA148B73E7A60E562B
+0862AE054ED5DB070E4511BEA08C4A45A0A4E45F254922C3AC8A60F749CF3199
+2B54F58C6D1219515ADF3BA353A8864F2379EE2DD75D1D6D4F23D4DFCBE916E0
+BC6BA439068866934B51C4B3D323F493A155D734D14629E717859F79651E7FFB
+AAB7DC7D5AB2C817A2D53B695B76DAAE59C130DE5BB0250B6FC71D428E51C638
+50A12028F5AE208554638D56354EED671044FD120AF994A382CAC7BEFCFB3787
+14C635679E0A83918F4734385B06C0D2430ABCFB9790FB6B0C35B1DEC75147FD
+93FE15B6768651E4A86BC7D4ECCF3929004CC1D83BB96FCB66239DB04EFF505C
+699270F60BD85C459DC560ABC6AEFA21A14EBA379ED68A0D0458B084692FD3BC
+82662FBA17BA478BD4CBD0581486B3879C29EA67987049811D3D7924BD567652
+08CF2D76D019BACAB684E75CC17D43752ACD5912B77B2598077912DD9FF9B7F7
+9D45CE8BA008826E3B3453FB33960AF037C524F9EEE1E5D162856D7C61E60FCF
+C47C65CF4144FA651D6C1018CBE382976D63357457B65A210C0A91DB08EDD237
+74E2A1074ACDA59FBBDE07EA3A7D35301D77C9B3B32523283EB031CF918F2D70
+A37B7830270965B7DF23026280175DA18783BEEFDF77E594DDD0577604B6AFAA
+04CE83C72F51D43F560A8A637C9109AE23A2A8E70547B90796194AAD05A71F55
+EC2AAA6E6F6195599A64D0B6881E6B6C7E388B998A6EFF16FB50CC4FD6BE9731
+CF4CAC7689A908305C5D10B452D99F241DCF8A9322D5A3D1675CCC5886A72669
+968784DF64DE454E24DBDCF35D8447142C74E39AEBF975415EC667EF4ADB470B
+7B064A2EB41BC9C748CC2C87B34119AF8D90B787A1746C5B0EA0A596087FD328
+921369872040912DCBE8D61CF5173B518AD912412EC6E1E1A62F98F94CC692C9
+F8E1FA3524839F59184D6222EAB2DDEFF9C5AEB52E18D8632F45879F720905CD
+7E228DE6808C4DD45E73C1962DB596000C951E0C7CEAD68907C4B6A71A304DB2
+EFF52E1E4C518C16239A1BCA98F5B2B31DDEB4645891C2BDA55FA36BEFD60A97
+49F18006E4745FFDE55AA8857BAF4447E6DA000E39680FC39D1EBA90D4B1B590
+84EB9E16F9520ABC79050E8D65BBC6D89D1435CAC07B3EC707390E5B4E6EC3AF
+6080323D4CD284A90839D3E64662DD475658BA23B5C830052E8BA64B289ED4F9
+0F1B7CF455230D4D287B1825EA428C5307B8A6E634870CD3F4039B0319DE21B9
+86CC6BB783423D6AABDF9116BF65F434E2E884DE5745FCDD9425A2D24B3F281B
+972543253492F3F23A814F9EA0D1E2FF5858900F0FF61423408417EB345DC41F
+4CA225A39F4C7A4B71E1BEFD86749274999343B0A062C11599F83F0CFC8CAF49
+C9139888C443C2D882C91856601086BDBAA9C35371DFCF1E964CFD71AC2A0B69
+C30FF89044D0755AB03CEC10AAD0435CA3F1F86B42FA70655179FA9BFA41E7FE
+1346EFB0034A18C228A8B0ADA76814F18E56671EE6528288B511D30A03F994C3
+26785306EBDB08A11C09662261692F98F385E61F9497F36F43C627B6A3FAEDDE
+3BAE58153A3B740E956FC41E29923D13888A50032597B9CAB299C1BF884A5001
+0B52622F7622A50EDFF74D97BEFD798E183725BB276A6E33E250709781F1887D
+53FC854F7F07F156D509EF432DFA317CEF0793012CB2F097E07C66BDEF5EAB7F
+CE0EFF17285F31298BB81C1CC50CB0EC984C1311B66CD24E0602F166F5014185
+4E38CAD17A62BEAD92CD2AA25DB0D4061F503E2E2ED4D0EEAAA6C97D2B253D96
+1AAB5F4D40EBD363EEE76A01378BD8636BABD43B9A8B18A1A514B27F0C88110E
+1DE3254D37261145430CD39A8F2685E611FF9C14E1427EFC121FF812EA60955C
+C77B58708FBF6BA301A7E909B1D166D002D8C4B8CB66C51CD52C07C9010D5359
+82A217CC8DA97CFD5FD99E12D205F61473401D3C43AFF0448437D316694747A9
+ACE4E9BEC72026B1E83C037FAC43460F62B1FD771A9C5F03AA347D888ABCE3FF
+4B7B7B69F5E49EF462CAEB299555156892014ABD2CA18C7189242D5219ABD178
+C5819CC1F509EC0CF0E1E3E249E871C1ADDD06E18644AB897D9DCFF9B9E971BE
+D2F8125247A2ED412AF5DB80CDBC588AE4E195DB17C4437B6FDC5CCE091F88AB
+C92128DFDA17D7326AE1446DC91BBBA989D94045A782D1530B81F551972B9A46
+EE407EB010DFCD3830F8DB622984C62F7F4C3FFE6DD106B634FB5318CF450F3B
+FBB998B70D84EBC210BA829F5EB76BED17F1BE3F2537BB2804A1F4813E381DFD
+C54F6F392B00A82B7EEE6AFE4976FD7235BA0B8D339FC41AFF776E611275D72D
+34AF70C85D54B33AFF4B6C141C1215358DC5670D4F9D7B5C636C766184E6863C
+E7A8DB1FC60C093CC5B20C1454748DBF05EE2FAA71F87632C61E80DD10FDED0E
+A7046335C29754D27BE6B5F39AD7554586382ABB3355E367E94646B2FC85DEEE
+14E5831172B5668B27671D5005B0EEDC0244628F6746F43DB0E9F4919957BDC1
+769C1A5970EDEB74EC7F49F63F8367F554BBDF04C8A18A3C9740476243CDE6D4
+A03FE56BDC1F148538D07C29EA1295CB4E4BEBC05A3765B8BDE8D46EBB0206DF
+B6FB82412BA37109FF0518745227AC234AAF169ACFF2776E820B425953498AD5
+DFDD5AF4DF661531598F1548FAB29F8E28C4AA67B987D33B084BE2937591EB1A
+427945B36DBF80CDA83D02D2C1C808CFD8D1D8476F78E42F295166C591EA545C
+7AF53D0AE4BCD3C39987A06B5556A9C63FB411C99D4AC57B79FF912BA5987575
+0504A87B3304B4E6FFEB865872807DFC8EADCEC909D8D6D839F923FEC10424DE
+50C16112505B363FE32D5EF407FE2B8BD8FC10799C3CEF5DC2DA9EE7DBC774C8
+F68680F98DB7AB84D79565E84B0063B2F466C82AD817C744BD72605DA743E612
+3DA12819A2C5357BCA207A756FA1DB40682AD3031B75BF37B17F671C92CCA035
+CD188B5184F2A8C01DEC7D75062D0E14A1218F2CF8A3EF5079FEC3F95F73A9ED
+5F1C2D108A03B9435D2A8E875224C0ADF0E03E558D29EE705D44E2763558471C
+9BAE805428A2F10527A1CCF09EBC44C70CAE43768ACA19628D801AB11345FF6B
+A46D23DEE958A992D3111953C82903B0788FD52BD491B78352F3C9133FC180E8
+3F1B98CF4CB038124B9E2A9699EB5424A97726621ED51DFFA1CAC9F1BE906B7E
+B8806A9E5DF8BD74252E67ECB24879B253BC02E505B7A32468594D70A7356F57
+932C5EE332F698F5F66ACA1D4B81A9B521D184EE6EC52BC97CBFECF8FD95E27D
+F03AD4B97E300E3F36DBA88A40D9F72936410CA2B511C42F4C2EBFEB20BC3A72
+440B22FDEB2F46175F64C60FA82F7C9AFFDCFF96640CACE4C211D773F03C7BF3
+2A322AE5B263132C6DD178EF04E62E1265EBF8F4B306C8E5C2AAF7C882DCF8CC
+4153A3D63CADA7F1EEC6902D48DAFF08DC3A17E9AE7732649A971FF6671B5EB3
+D741E6507F6CD7BF69BCF6617A86E689EFC7A3C7D43F85930791FC3E0A49AE12
+563490AEA59ED993D11E0510F64FE31FEE70C92DADB323E36212F3F5C15125B5
+37A480B4E46E5CD42C32E68D7A574153A2EBECFC3A8872C4D7DCF45311AAEAB2
+03564F6F595FEE224F75B4F4438627C878098114674EE482BEAC4941A87F7EBA
+AF803681BABA0890874FFB6D01D3D3CF0FE8682C46D9737E95C913F64E55C300
+FA0ED70D5C604F90C1D764CBB0C49C34EB7B76E3BBA02F1154C0E20B7D8EE5CB
+B21BCA91E4BB5DB62938FFA6361AEB2E49BFD61C053FB73ABD422C09749179D7
+B7513314D5DCB5525E72018245E4CA624EF10E913C0A811C76902B2FE6C74EF3
+EA839539EF27B31FC7F828C272B72685D23A1967D4BC903A990DA7004DF42914
+C4B512E1B3EC50DF510BD51EFC31B7D5C4DBAD3F24B0B0ADC745E263BAC4A6B6
+0DFA8496FD4812E0C51AB09598400C474F02742C010CEB834B84B466882221F8
+99CB8E30D38836B43B2361F29C1BC3F35AE96D084E2780BFEAE0809AF6CF9E7B
+2738E0774629C43E63B90A31F89A6ADB29D2724520766A76FF186D6657204789
+ADA458DB0DEBA76579EF9B21510F15A98EC00F9B17D5E2F927477B9E97DD7C21
+4F248F07773F16AF916B2BD31E6D6631CFEC133D9BCA1EDC8EF6C5D788A93D88
+7FF7E671869ACF1442A14997A01B85F642FFA89AE27D60B53CEC9418F772E59C
+D3BAAFAAC25730AC6B7168D9E78B974A09637302D404E64A11482BEF20A94A9A
+8C9EEB1E48D758FFE7E5236888175F802C23CEBA580637D975A979D284EEF29A
+FF3E83D39EA8DC40207A1C91F021C7FE9128400E79E1D1C88BB4BCD8369A9AA8
+58D0592A3AC18FA116DFA9DD297075C9C6243CB28262539EF1C48D850F66546C
+B8EFB06C0F339A2DE454B91B129FBB3CD3F319FDD5FB7DEB07827FFF722C95A8
+ADD385E9605E4C5E4B467455FAB8E054CDC085C9F3CE905DD5194049D1657839
+73C465D4348000A687FECE3C916F00960EBC7A245F67A63A15291A0F62261D3B
+D0DBD831D091F9FE88BF29526B7316E33B229F44DCE193EC459F4A5C0C0E719A
+33DA6124BA1D2AA3D93440FCE000C42942242A9E356E5CB10560CAC62FCD0DF1
+ADE8154DF592776882EC3A77D6202DBC204E3DFB97E05ED1128DF9A2EF0C8C3A
+5974CC0B523286147A938EDEF90923DEE8C1758FA8B6A0B689CCB1D8C365EC1A
+1F6292F3D4A8BA49B6BBDB1D92E338BBA96E00568A57C27C64F2AB8159DBD21C
+69A49DA9DA4521F6C8CABF809988F886780DC60413C46CC8512E2A3396754FCB
+6FC515E242BDC9BD32DDDFC1A4456B837C21176DD534A41583966518135D00ED
+4E4A7A6A639F464A354674CC1803A81CB9BFC1262815A4DD95229F05956B97F1
+ADFF3996303BCE98E36BC076A0A3A9C731162957B56762F8A8B5EBCD716A6804
+1954278A0EDCBC6C1719B9D3F8FCAC515A814601D6FCEED0BEB1797BE69C6404
+DDD598E08571444E08EA827BAED5D2366182480FAAA91A37C9D7EC7460A614E9
+D4D5EA6C425D9B9131C3769012FD66896BC1D0086DF016310DA3C56AB53CC840
+872F3E759A3F867E6D1D42B611C9C781BBC9AF55279547766D0351FF2B48FD49
+CE58CC05FD7297BC11F59DFA9F1C57F465FCA6FA213591A65282AD2E4A92ADAF
+
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
dup 44 /comma put
dup 45 /hyphen put
dup 46 /period put
+dup 47 /slash put
dup 49 /one put
dup 50 /two put
dup 57 /nine put
dup 58 /colon put
dup 65 /A put
+dup 66 /B put
dup 67 /C put
dup 68 /D put
dup 69 /E put
dup 70 /F put
dup 71 /G put
dup 73 /I put
+dup 74 /J put
dup 76 /L put
+dup 77 /M put
dup 78 /N put
+dup 79 /O put
dup 80 /P put
+dup 81 /Q put
dup 82 /R put
dup 83 /S put
+dup 84 /T put
dup 85 /U put
+dup 86 /V put
dup 88 /X put
+dup 90 /Z put
dup 92 /quotedblleft put
dup 94 /circumflex put
dup 97 /a put
dup 104 /h put
dup 105 /i put
dup 106 /j put
-dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
dup 116 /t put
dup 117 /u put
dup 118 /v put
-dup 119 /w put
dup 120 /x put
dup 121 /y put
dup 122 /z put
23DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
19B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
1C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
-8BF27C074DB8546B9EC033E07EDF1EF79EE58A49CCFC9051741BC88C67B12A17
-43FC5E1AD7790F954892998DAD5D8DA5D9B1A80E07BB44A32B8315062C315D4F
-94F2FAA0968D92A22E99D18B93C895573FB4BC545226572941DD010D3162FDA7
-95F95773385C241AACC7764F554780290CD9439210C93F720A3E4D4CFA995EDC
-00A253BEDCCB5945EDAC6B2756ECF03B9361DF03C9C7FDD8E893B4C0C163A891
-FA088A893BFC59DA23243078664D326574DB10164697F6EFEAAA5E0CADB8980A
-711021172DF31D38852A5BAB66CF62DF570C4FA23B4D2A3129EEC899FC70552D
-28A53763C84056DA456E2DB42115A46892BB0D1890EDE69266A1C4B20757B3D6
-C2949AFC284E0968F6A45E36FB8A1D0D449D9E7B5CB2FD98335D710C4D49C0B0
-7BE55769E70DAC13E5545217A121ED7CD68B7C9FC12B72934AB29CF487059F73
-085E8251F695FED98AF3D68B808D95B1E29296A9DB121B69CC5441FAE417871E
-C20B9519C92E31B9DA047A7220B0EC09C8A47576114D85D51B4636BBF3AE7730
-83A37813FE291DC15EAE8167E62923168FDF9B9D865CD9203119668052F2B11C
-36C8BB63921CA49A44C6CEAE69C995BDEC5A097E8F1325B4EF007577FF011F45
-E3C0883EB7E6AC75AB7A69DF35A9A4900218B560FBB14660141594E8B4835E97
-EB0A4F16BEF6AF6AA26E7B601F6E49DF5338291D7012D513492C35AFD99474FD
-A4BEBE572CAE0831BA340DED3B1B10EDCD5CF8AC84DA4DEB012B9EBC87321FAD
-B411B3A3BA30EE2817CAEDADC8A4182DB35C6FF3B8961B26822CFA082F0A1CF6
-301DC800F1609F1095BD60C322C1A3EADED26963C565D3E690412E8260F2AFCE
-9AEB97329794DE537559865A14BFC1CD4F18A3DDD3BA831E7A272FAD4056FB8A
-E8469AE2965A7DF3D09491DC84C64B38355044741B32BBEF1F424907487F5191
-23A61C352620EDC72A376C7774EAE6BA078CEEF6F0ECBB2D0FB83B74F6FEEB7F
-B92DE4198EA244F6B37B4D78058B7F5CAEEE181786C328A1E30609A9058F4356
-9BE4B5DBEAD2363FE6ECCF1BB00592AC8F1DB87E892152E43683251EBDCF0A90
-719D250C673CFABAB1CF5AC4F73096F5F4FE0F6B09C51B56AE2A0B975E3DF939
-53F1D3CDDEECF80797A84F559695168D7EF0F4D191B914EE66973645B5A8F8BA
-630053293AD47AAA29890FD5771E9748122B826C0630E516AE1BF92D69EBD0A1
-5115290D1FB5924436D43754C10B88C19C886287B65D5F523D334E1AA5408C61
-C7AB1B64CFC61E3B9125472F997505F1B96A83F1FA9D7FA1ACE9B14922FC6F4B
-CB29BCACE55E5BE4FC60DF427DB44188891AE8EDACAE010CCBCF919DF7FDD464
-FCB381CB7814BC353663447A9CAA4BAF69316A614DAE7C04C27EC3A1CC70A8FB
-2FACD35753531EA3D8AE0DA9A3B7C82903B0788F904F7DDC1D3AEC9EE2EF1E2A
-3459B15A380B9A5D123A70D76D3C783A86F5EB91D5C6CCB823DD6B6B60E59CB1
-DA8324E97AC28F401CC62296690BA9AFD19E865776794DF1B4177339A470ABA9
-3197F8866787DB360902D9745BCC0E08DA6961FC2895E565200D90BFAD3F2F37
-E284301A346CADE87447C0B40C3FA1F18963B31AE3ED9BDDC6515ABD45C83AB0
-C86BD0AC11B4D482E28D14E23E7F6C2EB72E135237956B461A2A36A13D09DF99
-E4D424779BEF2957B04B349648FB88C83F9377F221C47839FA010844D7D862B0
-EBD7A39BD892C54D5FA5169889F0842333FCF45F1375B9F754841D5BE3305E65
-FA81960B0AB79EBA54E7E2CF963E75974091341D7CD2E496872C2347BD2DFF30
-B68B56B480921D8BC12545FBB10DF826595BE9EA3D93CF1771B2DF6450F795D5
-938F09DE2DB2881C0BEC916A1F3DF380B0031AC05F75E10E5A0D6BEE4A3F6210
-F7E6D72D4D3E775E6C5173F69E654084FEF9DEF26ADB0404A2150AAE50D93B5F
-4CF9C92FE57FA35DCFE5B15AC34A5718A5A48C5715156CC2A2E67C04116ACE8C
-16A8EAB5B440A00BED2B0BDC155FB888B706B0344B4976B9D65602B3AD9E9DB2
-DD35632C225B382464DD698FF8550881EDFE874E9C31F82500A83F9AD5BCEE5D
-94812BAA3E07C287966134637DCC85228C14FFDDEE4D1E76D2EA16ED148346ED
-DA487ECC9B66E218DCFF7011ACFAA313B1C544839FB58D943104A904D08A1D1A
-C681C84DCECE9C2B827E27C59314E4D11041A10CBC7818A7B23778324BD4C446
-A57EDBEBE4EF700E1B5D01CE05FE7A8EE76737DE60E15C0B14B4D8BC7F28C7A0
-46CE0292F978508E2E27D58648078E858A858D1B152B9E298FAC6460612E8A5C
-1C429659CB6A87E9A030F428D5681FA21B555B502B2195A6E961458C136B83C4
-C4AFC6D1C10F374B9598CDEC3053EA938DA72E8A78B43A4955B6C38515593809
-B6A9B549BC2F066A49E7AC0D73B53F2C04840D447984EC3EE137EA24D2E85F4D
-225650214B06205747766E1FBC1311F1CBAADD919B8729735943029091861B01
-DEEEEA8F1D8241DC7AE98545E701B4FF01F5FD23B7E5CB7FA7EFA1C41667D140
-6A80CB026B4CF677EC709331CB9A659A56D1513E3AD1A46F2629277B16DC276E
-02FC1208B0F4908AA2FA9E8C856401C5072480B41BF4083131D9F8C88C90AB95
-F108FF455C55AC92AE9E27942F8C366BB068C06F5F8E8C3C5952B63497768188
-D76ACB57961A483078FFC1107301C89F857C66016BB384B350099094E3413EBB
-C16818A0C1831684C503F93BE09EA59D74465E72400C3BF46EA7543FD8E41588
-22C32CBCF716844C6F77389D7A8C228E1A77CE46FF04CFC5080EE3AF10AA533A
-D1F56C5D1CD2465A928DAADE746FDADA0E421CC17124B4209FDF1CA9711D1548
-10A8FE928FEBB8718149BDDCFA5F3C139ECA3A2F0DCCA5AECBEC13E9EDD7D893
-1A7523B02ADC4FD3CB1E149C4F5D230827E102AF0D33128D7E88A3C66988D217
-1FFB28AB7FA2FEEFF8FFE1A84A3607B362B1BF4F531FB947C4BFA91E6C77D584
-1ED8CBB30D37059DD43271CEC02278AFBDD0E427A967E590E157653A2C0D148E
-E46E12013F686B90746EB1CD680BE1D9184066E01FE7BB5792561B7A22328312
-472D82D3A46D31568B4C790CA867EAA5B16833EC8C7404AAE9F623AA6AC17AE7
-5A7AF1D862CD1CB1F25A32DA697434EFF3849C422F8171D9A29D797C36A09537
-F37077FFC5E001FD85199C5B3D9B7FF7249B80BA8C62AD965788591CD238C3B6
-026DEBB4A60EEB2A3B62292F8F3D82C94BC629E96FEFE6EE97074F108F7080BD
-EE3540D49A94A19F4B1EB7311E9D77CB1D26D033423CD61DC4291A508AA2FD4C
-304B6C5184CBB5CFF8A3BF842B682E2CD0F7A54AF2C2D215C8B1FBCD77FB13E6
-C2254AE23E129B430AA46AB4E6B35258D470594718209777C57959C60BE17FFD
-788A7243B7110A2090501BF0C5F143017826A7B298CEA06C3B4D8D6214A2A745
-239BC0D20F1000367BAE0E9542A8FF777417E2A7B1613868DACE247D8482FAB1
-C0304AEF41233EF9A51497D224FABEF970ECD22DEF65DE46E08A1E83F367CCFE
-9E5139944B34A25624C4500A8E7FEBBD2E27A19C3279AB588C5354F19003A5F8
-287EA605919B91E86F1BD865B54EA864000ED555B5CAE90DAAD0CDAB0B7410E7
-17D283D03E0A19ED9AC3301B9888DA02DBAA7E3EC611E118B3DD32510F96BE6C
-6910FA31847F962D56209DD046AD60679F5CEA7B2EB9E8D110DCC460B01BDF1F
-9C3F7DEBEA202D6C7F0BE3A67735C4F0B542E4CB02FD9EB8FE744AD244A22DEC
-36EDE0A6181C7F092855741ABB71AD047765F9A45737F922A995BC6A8B6150D7
-F5A3D6A0DE3B4210373BDD009B22BC35436592B668F06BF1C87935D525AB43FE
-AEDDD07D65B72CCB2193C4E53DA274754140DEB1A273C13385FD877127728F68
-BEEBFBC38C893FED43CB4DEB99894FD0A3FD4405638DDD35340246C6C7307772
-A70B9C9EAB60A1C20D4D6CE62B49FD80007C657C855E10998146A6A1CF1E02CF
-51DAD4A2B65C2F2D57B62F5D79B65F0BFC8479681B23116041369D539FF1DF35
-DA9F13A50226B93529BBBB9A906C70C43E284AB297BFB47D1B1FFEF909CA3146
-FF2E87CB75530EF5D636CE3E5AF311EFA5024CEF3CB6B01632BBEF81597BD237
-EE1B2817F70980A898A43E31A802A42FB32016678F7209681F541C38A83B489B
-DE7FEB97315CF292C301215DE73EF478D912CEC84534D107F5DDD03E9AF64DD3
-8D8033AA8AE386636E01FD4200F66C51DB0BF91CB84D4EE768B9D621E60B4185
-B0EE87D2136C1CEAB8E330C5DB9FE55A14C64BEB1B1BC63841EB4C8D6AEFE495
-4E74EE83EADDF8C543B1AC74C814AF090702F32E573E5DE4CF7141ED3135EA0E
-264536181C8F59F0EA0C4E8680C26B994C6182FF91E213CFB2065C857C55B3AD
-1C4726017B887BD4DFBB46FF7EDDFCF48C4421C4F26B048581C560D9AF847DE7
-B3A0FE52DBAC291CEF0A313F17F8FE9D322559EFF979FD2E552D1F1EBEFB7AC6
-EE88B7761E0CFC97AF57F08CB88470F2DA754F09D6F128FE965B20BB2525FC98
-249C1B540C9D2D073233F8792F6F265AEC3EEEDD369052723A2C266457FD93FB
-07525B72760F160D7C2164F09B021F4F5EF58E378B3A2E9DFAD28D16CC8FEF43
-C6C99CF31F77A2DBA3DA73EAB7494222DD30C0EAEC602B7E253BA8A2462EDB42
-A4C49F987866C5424ABEC38A303D7FA64F5A343A071BDBAE02E3477E697ACA94
-1A41FA4D319F7BB630CB8F02E7644EA8D12CF3D497F4F59FD719C43AC95DB400
-015058B5130DB231CE4086E046A78788CEC68F86C9C37BB32158CCE2167141A9
-76D647E47023ADB1CE07DD63E20BBC26BE152AF945872C200486CB1EC387D4EC
-297FED25D2D2FA1B9595FED7DF8707792102AC66071BE7BD2C1E369F2F18E654
-2C1F03558B6043D11A1E28D49F7B0E45A836AE4F82F324DF072E012C67663669
-D9EF28304533AE7B282F4CB0B3F89202E04E88675A6FE03AB57BE0A02C68385E
-0AE9E3563375A2EB3C72BB2E26C0681AF73EFEBECE1B981AE6A7570D96C646DA
-75CCBE19428D8C28BACDBB5D88EC454B86818CD8AA09084003C2ABE99A1BCB5B
-1D324C9CE7A50632860C0669E9B69CC5270CC18AF2A2CF6202F50C273A5EA3EE
-9EDA893EB8629199AD7927BD9D0D1D3833FF6D741AE5D3BB3C068063285C0EC8
-6C96672CB3BFF6132F7C3A0F9E786023F00BA5D0D1EA25AD724EE01B3CCFEAB8
-655725691A3227EF4A0406CECB7AE7EB3445A4567F88C3C0E3DF7C1C9D4FCB88
-318E8086048244B2DFA9D26034B8E3D5A426E5000FB564CD26FD11BE4B0F77BC
-2AA916F915E2B0BC5D13123544313F8EEBE417CF38B694277DA68F7A6D3805A9
-4CB1BB9905C7042B5B9481EEB02E2F83C4BA2DE1F69C0ED478CAAD51B1F16207
-BD105239AC1575688AEF9CECF797BD0D500BFFBCBE9FD950A5B77744E72B3A35
-2062510F78E3DB1367ABCE1FCE968D1B370D4FD7109BA3A828B27DC8CD23D6AE
-440543FC93FFFA292EC7D997F2CE8D463A527A55B549885A5340A802CD217DFF
-38F03DDCEDF502968E8D9DD437305385ADC964EBB0ABAE75D8FC028F6B0D6D57
-CC0AC2691C0E304F3D0DC2BB38AC3BDA20580AEF0BE959D0CB5F142AA76BAB3E
-CB2061FA46F208EF10EDA17D40917E8107C7CB8F30DBDAE15BB6680E75254606
-A8B523C7C2FC96EABFA2BA6C6C0AACD8D7BAC994B696CB53D7BEE1F220D47F79
-3A68B04A705C1CC6CCB2F771A11534100ECD8FA4A84EBA138FC46105AA86C7EC
-611122CADFE8B5EA81D852B5DED241587616978FA3B76F8334A961997F2040EF
-D3C214D230636ACDC18242FA4860DECA7AC39A884D73FF37F8DAC93CF09703EF
-A36DC822458D028F849A5C7268E5AB88278E28E5F517CE724D47F0ECF0E8690C
-9313B361BD056DDB0880F43791636C4D40D18A9F46D945CAAA035EB7E0A7F570
-FE4013193C331556B369ADDF007686B7EC08F844C1C88BF1D9BB27DFA579BBDA
-492F89AD3913CBB7BD27B484BFE398CDD06D2F1A128F7BFA78C0FC3607FD68BE
-1A84E848850619BF7A0E545635AA857CAAF88D9EDCF50F668DE044456D4EE431
-2F87676407D4AC6F55330FBBAC38D3285C7DE696C517ECC358E7A064A6B03CAB
-2AA9431C4E3414F783D959D492B3BEAF1E73F57C2B0005B23872181F244DD164
-5D51E7EBAF9D75003E61AE6CCD92CC885CD9767B0B7B358F35C5201311B2F19F
-CC351286CA466E5084F6276599CD9941A9284BF962FD738ADAA3E27D51D0FC9C
-EA531A758E2B73AB87E1A57ED9458663426408B196E541FFF8BE5374D76D0746
-C44296870BF94FA77437E5D3124661A0574252D85BF62F0E9829911FEE953A1C
-C14694D8B4CD34846042271E01ACA1145D8835BB17EE09CF56F47EE0A2854580
-C3910B6673525F99D9932CBAE85DE93DF2B0CF892E6AF3E568275230DA9408E7
-C918F74F101CFFC1F4F7E49596A100DB9146E5F53E1FF87359C27E8DFE3E8AF1
-7731036EEF9E8CCD909BD3BE82392D55ABC50A90A89EC845ABB750CD138E0C33
-5E8847C34758F45CD07F3BD674C76DAF0FCF70B18C4BED29F7E1550D797B6A44
-93DD8F6BDD80EFE7720E59174B08023F013949457EDF6A2F0BA9F4DE8E626F40
-FA05A492E0EF4D8C68AA8C4B4FBF00AF3F6CD11CE75FA71EEF0AB91C96DF37BB
-CD82049F8C20C8F3524A150F4E39E5D21081A507E7CE1EF3EB3FFCC6AFDA7603
-0EAC4B07E297A96AD2069194A61BE8B113C4D20D325822C85B8CFCFA3F40C758
-47BBDBC0769B9FBED494A1BA0D4E61922B8C0E417357C3561FC56A901F175DD3
-281651EA8529914F2E4837A2DA0CA3B46004D5552107907934364F7DEE939826
-7D06196829F660151737416FB20ECB8F36E3D8D7BFD6712959139B5AC5919FD7
-C0E216C3BDD875B322BE612D818E1E32D6ABCF1B2555406BDCA36868302A9E3B
-4FA13AF128F2E59C33038FC4DE675C431C4D52FD0BDE232C3DF031747D4C86FD
-871493731C2208DF1541873443DD5ED8E03CC0DB539B46E130B60B01C552B698
-200BC9B7A54D6F10C95814221FB27498D2446FFDAFB61478AA47467531E25B9D
-4D06740D92DE79093B23D38C36E5055B380538FC7A8EAEBB47F60EE2435F2843
-55714BE5961428A15B7A86E6230748FB48D9DA30ECC5A386E4DA32C0F69EDCAB
-81248034D037C66FE305777D1D0577BDDE3B984E9C807F49FBF7CF363742D5CE
-FAD614C86256BBDBC6A09803B8273BADF9F12861F5D221492E686293A41EA097
-6313B2F776A927345CFE6FA20A12764DFC36154B87180EE143F0C4A1A52C0BDE
-B1B499D4B882242F96A5DA4B7BDE3C4E46EB2117078CF24236BE617C9B27E852
-D88BA1AF41A0FDE6EF7FA39983C3F92010146194E454E8DCCB8BBE45069632B8
-90B5224FC5E789ED902B688C2348907B9B43CDCF0E91D683F28187D0280BC535
-5B1DC2F60309299589D1FE956DEC7D41542612F7A144524C905D2A85FBEC56C2
-E277A10A0A7DB950650ADFBD892F6AEDA7A6C656FDC8385BBEA11132843BF8B2
-AE328AC118813A49902F0A6B82266CD00E44C0C82F9F5E9900209910E44D3A77
-2E6B344E9A4F293134BDDF84FC2C84EF0C683D57317B83AB1B330E2EF0021B4F
-43CD405BF85B734605302C324EDED59C7E7C677B9F2C2B1F483F7D80428CCC10
-49A94151FA23949E63E02FAFE36496DBDB68CC2A22878ED902A15CE90D4435C6
-4D46DA5DC2058936196CC461ED2EE73C0AE0B56BFE5BBB01F478F7C314CF6764
-00DAAFBE44C85C1134D24BDD597E0A81030B6E2A4927D5D5D6ADA216A43D12F7
-0945779E613582D17221720C2783074A6A1094D749C281F70BA0C3FDF100CFC2
-3F0F532AB5DFE9042C01F98887CC49D0A977317D75E8D59BDC200D14FCF510DD
-CA3D11CF61C1F61EA16078B90ECBD382B5605832659FDBA78D7C6C608948DC07
-0D5B9C44FD2930EEFFC22620F3AEF09EFA314D19EF05961EF46324C98CDD9EA9
-A3F47610D6B44E4FB344493B3C2DBFBBACDF9FE7F07812A0D313180DAF366106
-AD062285D32B024F49595D2674B5171A589EBEAE22EAAFF40BEC96357E60E345
-103BDD9EEEE21F9F84DED65A2E2AD59F758199FC083B514132A6930C8CBF7B2D
-B67F96555A5A4C4E6130C5BC91747088AD9FE4CB9D0B27CB9F96E8BFD9032BC2
-27A1805AFC34397DF1FD3B91E788AB1FC646CC9FC4DD20B1CF4B0F22A49D6989
-30770EE4C4C94855AC800D32BE207039C30AB0C371ECAC040378EF60072F4D68
-4CB1C03F8ED7945BFE08EB333C0C39C869F38BADC8D2AA1B9F57B22764D739DE
-2D51FCD79BBBEBAC09BCA917B7B3A0CD6240DDB93D6FC5C9D64A7D031CEF2481
-A05484F1D774F6D0F08D794C856F2655A6B32827AB2638EECC3F5AA1954B8DE9
-1868413014B763F69550B9D9652DCED1484A0B29CDF42C89A4AFA274BD3BABC3
-6B360049344D5ACF2FC7005A58A6C6C558111C0D03E979799A523D2A2B6AB19A
-B20B4DB1D7A1F7A8B02C1CC80B467BB5CF48BBE83440DAE2538A8E98E9588E86
-FD288D912C9545B06D76B6BF85D9E65B015C973CB5FFEF88534165C577DE2939
-059FFB0074F8F990FAC7C93164DB9D34679847F10B565D4EFAB25B35C2F344D9
-DD4FE332F13965F3F9141CFAEA3A77DB7AEBDB37DDFA94BC8BDD9526BE3B164A
-264B9FC25D35AD5971CE33F4BDB6C88366E631FE6D95D1D120C1C795DDEB9FE2
-85AC2411A1A6E8DBC2AD15025E99722C34C60EAA8F6AFDBED517E913FB9F9BBC
-4CC1518EA5C025ACAE47F5BF85C32033441F063DB1E4D86345A90FAF8ABF117B
-F4955D9E290983A345D2AEB9E814D3409F81B25CE379A83666C97F2155BF043C
-A94E67CBFFD74C5AC64B0B37308F164FF6E504849A6D0EC31F164CA448B41715
-2984901A91C838220A9FE10B63FABBEFC8242DE104EDF1A481BEF5983FB24125
-DEB311F86A7617E51BC2F7F42DBE58B6C07BF172FDAA453C3F5FC86203FB25DC
-0A46FA2FB67938CB23F4BEF64358799FF977B27BB867ABA03D3B513145D05CFC
-D7A787D0FD9D13AEC24A41F3FC2764F5425ACBAB0DAB6B589C25189B8553A533
-54ED84484D06846ED7B466388AB564A7F7A18BFD286785994D5ED90971F0AE2B
-76C62774DFB83A270195FE2DC572DFE7CF77501BB73DB6B5469117580B42F2DA
-AFEE4ED1EBD79DF8C166C0290C2925398FF3570454C7D8894D8D2B1120CF908B
-CC3E3D692140693A5A90C36004E81AF301299582314E83FF048E9EF457B58667
-D34497CCED4B48C9EAE754DA35053B55AB9D6E3C4B6721624D1824A117AA5A8A
-48B30A1161E5D314119F6EBB7493EBCA149CF67E34EECCE22EEB46FA1E73836F
-9A96551285A7BDDB10101F7AB5954ADB15DA7294441E44EE8F751B3856E729FC
-79BB96554A08D58B74C3C0F238DF2B099AE3562A743220121CD424227E4DB032
-63B417A3E39670B4BEC408EC7FDFAD0380F5963380C3231975F0D8D2ADACF133
-54BFA59CE5A37AD55FEAF9A49D646D328524D6FD826C985DDC80E935CE1C1F8F
-8F9166D2F4274A39D780DF4EDBD508888F20C71F4A0C99765CFE51943790027D
-AD6FE248FD285B872A39991A880B910DB1B4BD5A5A0E6905963C55F0C534A347
-E53C77CE22393C2B181952BDB53234CAE8E46D252941ADE07E6E3A22440A9A7F
-F4F937912590297DAE0FF52B18DFA9C8E5F8B950DD41A7C8AD57204A0CF4E004
-6566B642334410FFC60C53A4CD6238CB9815D8D536FBFBD3220DD77F5C0EB04E
-6E28C5871A39743F9EE9FC507552C9B01F33E9AD9C1A8C23E584E75D9F3DD82E
-32722D372F3677E9AFAEECFEA2A66CD6C23DC23EA834DBAA0B80B494028624CB
-E51F885CD7BD4E14988F28D3D09791AC198A3BEA3886B6FC502A3B83A10DC2ED
-33FB4DF58BC57C74A9E72457232614FA03C1BBCA6FC4C06D06ECCD800C7E9813
-C380642552723243D2A13287D137A7149FDA264591232E5039571EF3FD551A13
-758145C95D61367A3C5DBEE88E2E433EDBD7E1C56CBE8C53E7877F4F9F57CF07
-34D9B4E1A186B89D6058F5E84290525B4F1721A3DCA513C8C61651BAB76A06EF
-84A87E307D72DF079777AFFDB66638E4141C16A819EED46C6EF68C5A70B003E7
-E4A2FD7ECBDBE22A85F078CD559FE8126E2338F4490E2CFB8FF4A3E99EC95610
-B95847013C2A74CA195D55F58C06A8EB34396943C1EC86A7089680D3264D6239
-B5A340380252F9AE87F031023E6B4A6895700EBED6E0C03C05B61EB538F2E16A
-DE9CFA6725FDABE88CA7F47BEF17ABA44A1402D1926ED28A716BDFDA75EEC4ED
-11A61D3FBDF2E20BEC4CA0E11EE2C6B34BA06D530441D37CAE630FFDC7A2EF75
-42BE0F10DFF82D0608C288C95FBCDAE8C5187F8B6B5FA8812D91A4A27E463F45
-0D8F99E45B61EB51DBBC2DDCE17050E1A571C833E143AEDE146E7AD8985D1E05
-38313A5EA7CDF113D32EBE8112F33997210AC269351DF254D5FD4C9802119D65
-E90C561FE0925B4B70DE46FDE1982CAC66932755A47C38A3BAD813D3006E21FB
-462D92B522C177FD6BF59C87F430641FAE6411DD968F6E16DB67F0A0D0F0BF3B
-4B174A4F358773C77FAB0FA43F247BF5A34885278A90A66C51D23CAC568798D1
-BAAE3A53794AD4B859B55A9725B8C6CFCE39EB33173AA0FA208024B7B4573D86
-FA0A36D7FF4D0BFE4F5B0AD61F8787F882B3FC66B5A338A3D98F9F4C6F582876
-FA572C8BBD0A596BCE26840E3248B360D85A20B4D7D15AF021B2AAFD7E65046C
-4D6D6403C3295AD2B7EF7E0A723CC2FEA7C7775034144931CDFBF03F3A0CA545
-AFCEFC2B3B81D262653634F1D28C4D8F0144C37ABFEB5990CDC39BE0808F6303
-84D66FC73B287560F6C8A19302CA0EF7C010CE25825E1CCDA0D4425E127FC9DA
-1770932B876F1250069FCC28DA68A6A1FE0F2ABCFE2432AD27C15255DA933C59
-D2419C06E059CBC2E9BA15BC480FCD1225EB7CE405130673D6BEADC930857770
-8E06FCA9E032F1CC2D5BB453C37A734E79BE7114C887B70450DC34C25A976A3E
-9E3192C11C72A21FAA62E993DEEB6203C731E5438D9BE24AEEC67840B6B34EC1
-A6F90F98E7FF79C2E49BB408D76823F2F18DE1BAC9CBE2A1D10A91899FFD90A4
-144ADB599B30CD7D6E010C14BBE4E8A20D0FC730966570B1684E3DF2C388F148
-CF9000D23A07F02524016FF7E7B4A22CFC99B8BB0476225F1A6AF16CF277C492
-414B9691138458704F585F2FB7EAE7F0CCAE1309FD8812AE6AD8D6114F89B823
-7EAB65A43C4835DFFBFBB3B9C73060BE5A840F85CAB2C13951CECC33BD2C2EA1
-774DB4B04F016F7645EE70DFC934FE567697139C1D6A6A70C136B88109452FBE
-0FDC9DC0B4CD83E819B007A11DA13693F07B7D67678248E54A353782E10A88FD
-8AE2472F6DEFED860D2716511F5FE259DCC217F98FB50B8DD7870CF25FC15D2E
-DE8EDC50B0F4233A74B59885CF3B7F54B913998C670A1072F0AA4931AE538A31
-44404A57E0C47280B7CD731056B1AEC399BC44E2461A9A1585CBDB08070DDE4F
-8B484DB21A931A8B8E96DF7DD720DF83563A04A9C2D114F367121D9F6D6205B9
-1DF91E59D5B176E28855A63CDFF6B890E3DF12C3FF79C0999B7077EDEC6F15E7
-BE5113ADB76F7AE1A9FAF5AD5013A8C7E4090B6F2049FE5E246AA70E707CB830
-59EDEF6CB93FBF9CAF277D55A7B8C4A32A1F665F3333AE795FC502C76E1904FF
-026650982495FC9F0E49DD84A2351157B3CD43623A95813C73CB1DF430E8DF8C
-5724B588D5C66F6BA66CC2D879B30DC09C1804A05B0C7C5D5362931E88D167F9
-8E249AEB644AE2B2C81ACA102820AE78E8D0A345D1342986F1AF422654FE61E9
-775E8ABD63D69ED50BC9FAEFD95A3B6BD1364112C24963FC12CB26B923F65098
-10C052FF431B3A699623C54C5BEF10EFD0615AA4B233D31E12D2ADD101A82EB2
-95957EBC9DBAB709610FE16BD5977DA98CC5282F4CBFDE9E6CA374E5F2EAE844
-2A4EE60B3CA1BD66111C1D442546ACD24AE2FE5191B809E42B33E61084069939
-D0459AC03F5A87F980AAE2957DF9FC66F0B0F82942D196BD9C1E09F377B26BB8
-9D5290B521B4EB324B0CD2B4E90E693B4BBA3ED26CD6166AECEE3DA064BA070F
-25C1527F08DFF170E157C093CF03B5AA33EC4B6D821D36F82310D12773994B97
-1EFF03BA2EEB6A575089CE26E7FDF5AAE940A95556917E66988B020A5B2FEA93
-2C8A3A6A7D2B5161BE2E23D97D8DCD7B910994E5390B2B0547A947CA9AD1844E
-25DD17D053B16E9E906F105B22FD49F098DED6C01F6DBCF1596A231977BF0515
-1E403A20CE2AA91CD305F829E2C53B3193D63205A5CF28EB010B3E73EA3CD54E
-3091DCF5FCDABCF9248BF695160405391E2F16393217DBAA0EA3EB26EF2539D7
-5A2AA11A797507B8674F18CC5E51268EE1812002D953A996A2FA2F58B21791DF
-5C7DD053983B05AC2D189C79B14CE62E7A13F831538800B37255A1B0E47C40D9
-073057E9810A0D776444555192114CEA8A93988A5E7C991D7B849D2DC3B6F080
-A831B347244E3B13EC832606041FB873CDC4627101B786139CBB1230195B6762
-0F4C83A90CBF82C201E5D8E4706138FB7D2C8CF897B1A2C6EE95932D2EFDB721
-4D48C1FB6F3DB3BCCBC707C0838AEBB401F85E6C57C6A44C62F1211B8E6F47DA
-9F18FE08E4BF7FC649F69DE56BD8F7F208D423467CC1F12AD35EED103C0A52E3
-6610B9E516BCF6F87AAA901B72F3CE26391412F5B36518C9FB78CDAADD47440D
-583AE8DEB9848648D1C9791FDBC99BB0C0661743104D589CB1C7274BE7EB7A6E
-07C360BFE998E52E6F902BBFEAEA95144ADA9A4EEF9B6FB073C5BBC27E2E8C11
-7EE0BD58224E024DC4A39A68D60CC69A9461C70007BB84EFBCED896D4B6656DA
-22E33D9AEC5D1B1AC9B06BCEC5E6AAA35B16250DC29E3C75E33E9C0144910160
-3B685EBE422EE091E35CDBA3AEA8B712160425C794C6D11A9B8353014C0D613A
-267AC941E3D5F051B76B68D7EFE77E6B060436ACBD54C185212D3201D4D5C5E8
-62BDD6401446A8F6D5F5757A95FE5B0F667CCE473779A386E1E80BCA1C38257A
-782335B9DC94BAE09538F63F95C2B95DCAEC6783E47986F969ECEFD656A6CAFA
-E1A74AC8024558EE17551D308B1593F1E2A4D23FD570BC70E035B232D946FB9C
-18C26F3A11D6CBD6A0C38B6B3E6E0C30A894D9CFEE3E02864A10762A1D197212
-567DA355E1C3C5DEC8E5F45917D925454973888FC27F8477B2E5088EDA336481
-4CDD5C2DA4430506603114B1A74398C3C80CD1ACD298F09ADA220BF855C1E8B0
-
+8BF2773F290801174DF1E106976E76D30DD26B2EAE14AEB46D9A6D5AE5DF24A8
+B1E70BF48388EB19A7C8B29C32060E48BD7F76511BDBCE65E842AC959C5046A1
+6E86BE1D71E78FA3D60420BDDE4B7AB23451F5A87CE169C24F59690D2FD61D9C
+81E29D0D3038876B09C9D5EF38006216080B644EEF27E9180DD485331A7F1C68
+2C324524CF7004B8EC76AB44560990C477AD1D11313545C7FEF3229FD8E1FB81
+C0CB794C23C0492563BF15952C1731D2613402854B0F0F69167C361E716AD247
+9A1599DB7CC277C2B15C4A8E7BC15BBF09B9FEC12962ACA3A21689E52D2F5D86
+14E14A8BA91C2502D8FBC950C4E9EE94406CC23EEF8656A3A19D820BA6A0CBD2
+04862E9B4F5C07062AD949972F8D5EF41C6B2386F26387FB0AD1D38345FCBD22
+D893B36A46C1BF3A2E79ED3864918BE7E859942A81D782517C61BCB8B71C22E3
+C83771B414724B5F477B2E7D2A4A3B31A7ED7D5CBEE58DC728E3912E8BF5D43E
+426CB9B73743CC9EC1C01E4D16B76D7D9D03EAB503168D6E8ECCE7C8264C16FA
+1CDDEE973D998C8D288BBB744E9A173CD45A9137FBC7428BEC36B98BA93A795A
+5B0363C503A49AE6FC8B77A7552E9486FD3885A69DD3DEEF00BA80712ED3AC18
+9C2AFD2ED50D78082BDB7EF77A828569EBD177ED828131936E925A60892F8972
+4216E46BEBC69A036BC915EAFBDDE504597BEE45A71B1F3EF8A725E9F8E12724
+7DAAD1B0F6F4CAFD0F9B7D6331490DE84B995192A4A74052D9D77FB87863251A
+E735E9146686F8B94AFC8E844D93FE36C9B2A7F9759AAEB94C00C174FE87A68B
+AF6304021C16F70D6DE0AC4D41B061493F1541E9660B85CC9D144BF7CC74C600
+BC3B4852D3EF21C96272DB7951CD7C99E089A12B950A64ACCD27E2A60CFFCA6C
+9A1C2FE056038CFFE667E4ED31A009DCC1897A82B113351866778927659DE5F0
+34A5A0C423EC636B8AA500F111EE3582B44E84422C745EFDF79A5567CD08FD30
+A7C3D4F4FDAA6C0443ECD80C37A6B8C79DC8777BEE2A29D9A8F886C32D9C1A27
+E36A1E1679D9397499222A00057B19DA30FA8D467AF6E39C3B144D465EBDE9D2
+A29B9D1004347E6B3ADB1988705E880F893733C09C3872092D4F57ABD8799AE3
+D93B799874C6C244E29F265101E561DA0E1A55CCA8FE7CCF33853BC63DA0BB30
+7D10C87A53F259CC17B04B24702C7011352ED6708BA178E3EFD64B9771EBBF29
+858F659D242316B0D8235FCFD5753482C30273258D25D76795C043962D6277FC
+5F11266D677AEB3FEF1C78CFCE463D8F5754DEF529F858FB63BB189AF6AC5DFD
+8CDA9EA75BCE010CC6442F7C3A2A4E82445C09F945099242F9150BF0FF432F5E
+0FBA3531493740A37ACFD827D615B51E8B31C2D04C1BADF631BCD0D88C69C3ED
+522FADE93F486BFCA28E7784C4F18D5C0810B61F1623EFC75A01A2D4CC5A6EEE
+4F1833AE27D66790747A55B544443A5A4F760D4D32658226B02AB823B50F0C27
+5AB96B1EBAB4BD292FB398E68E347D08BF931684A4B040F4080F6029ECCFD3E4
+1634F11963FB3696D7CE5BD792719D225DAD34C0FEFD258005B6D17E7AB2A3F1
+2CE99485B7EA798A0A4C82F4C62682E8DD71A8AE2DC06215E2FCAE9FCD0299ED
+71D9E2076938618EB24DDD70ABBEFE881F5C7E53A35F53E14D3A0A384F5C1887
+F3271B35DF22D585A6DBC6FD9EC887FED3FEE171B9D26D7A6D5F2D2E95B614D0
+A3A183FD19976EE569CA71BB04F0EE0B4004DD920F0E06E5EEFD7C534DC26F93
+5D089A83940C5CA041311B0C260BBDC4E507FB1EAE6E6611D92368581EEC40C6
+25456404194F3B39CCBC7B598690A63160D48E65DCEB2DBCC71838A43FE3E706
+866189E14D38E1F3F8665FD22DBA0C6632C39FE499645BEB569C27A55656EC16
+343CF42D90F6075FFCECE177E5D8AAA1AEBE69C54A5E6EE9FD63D163AB088835
+07C41D1B87E3A69D94AC3EA01203A90869FB78181265CD6FEFF5104A715B304F
+17BB57519044AF0ED113C35ED50EC5D1DDC9F64C49C54F5BE09DB5A55A15C2B8
+530CCDA044B3348279ACE2DB78B933F785D630DC5A50B5FD8B59F66CDCD5F144
+57E006AAD9C8E46F8449FE10A4FAD67399FEAD2BF4C84786999A0A202E6DE102
+4DE5A1C1AA193CCE7DDED11E061448729C2DFD77779D6137B8F16CBA1F542CAB
+DEF8D0F43E978C091F81C3E1880760E0DF6A803AD22FB18FAC19FFFCA27545C1
+A95CE57F49DC14C45042D668F486AFB17D2BC068ED6DEE387D8C1D79F6B604E1
+6B93DFFB4F740FBB246A77A20B259E0CAD2A041E49F5E8B7621BD7949C639A83
+2E22360FF4568EED8D7E5878F0ECEAD16D0C0FCEF5C60182067F65E780A85C8D
+13024A83741CEF3A0A5C7EC9AF17CC3B6A7E8E9F5CE1D9030D2B8A149870F5AE
+A6F8837E098623F4DEAFC72ABA66C2A8C451850FC4A445F7F9A5180F3A507B76
+1864229D203C2BC502FF4FAA942280C7A41AB3DCD6D6F17BC8BEE1B2778A3EDB
+7B774D000264DCE3CB4C0578637E1E5A73AFA25A514757B1E78A25B53F3A0B72
+F1C46520887103EFEEA0C8B74E03E0B2ADCF05060649B9C4AC1A38584D99482F
+3829548F3E8F8C84ABFF1FEBE6724E2B993B663B2611FDB5CEA8DB995C4841F2
+4370304BEA5FF2C7E1924DFE092F0962E2C21699BB0743B12714E9224F9AA72F
+EBB381ABCF5FCCEB0ECBFE24CFE859CE16A37A97843153B282E9EC4A7981512E
+9F6297E022C86BB50AB022EABFB2EDACB1768A07A6D6F93A37184AFAF9895B42
+F57FBB2BC89CD2CE89401AE756BEF39C9EABF986F68228A1FA92397B2AD65A9B
+4A9620866FB7935F2AFB353AAC7BD2212F03BF3CD7A675B97FD8F2E76D9AD388
+77401035D70C39FEA2D06096EC8B91B7105EB70683D6F086B4FF1B9CDD2B9ACF
+A69E0A056845E0634240DC2EAC13C086461954A90713F71FAA11F764137B9D20
+EA17D85B0B8690FB5DB9ED6DE8A59B857120401A43FF7C681B196DC34FE6DF80
+ADFF9F8044B5A73A46FD3730BDA083410904202ACFAF9B7AC9D6E1FEA68642DC
+89A8C69B8007693EA58059139C89D82376838FF3666D715F119DCCE6125BC239
+132B8F8B1910987E0431B226C86A3E75184DEF8F81D6AC4C6965CB7F609F24BB
+ACD268891727A67844B3DA9E65040DD4E6CE9EBEE720C70D419046A066A8A241
+FC17DD94FD4971A21D4B1ED809AE4E5BDF0CD2FD2C8D0E2B09162CB222B1A8F7
+E3384E2CB9B8ACD63763B11EE9FC647D74CD76F27D396285C319EC7BB85B7771
+E9984F7ABF4C7F84D1D3C458468BC86810370B8160C19EF5CECDD8B37A374ACB
+8C933C06270F2BCFCC8BC87246B7B0D83A85ECE239A435E7A46AC9E3A938A558
+603E8183620B7AED5B367F153F77F2741C21DE1C931FBB736D558191F7708DC7
+F5B5BC9291E9E283B6239E3D83B7B880DB26BD8375CD85FBB6C68800F56E65DB
+4E5D7E3DB87086C516188127FA6C9D9C874FD38DC3595CB55FFCF7A21D21E09A
+C0B8BBDDBD0412CB3C74FE85135E92AD2A74D7AFE61081BE8417446ECBB23574
+47F6A7F98BB95FED5ED34CBB36FA755A9BBE6EA87413A7F15CD0AB74E1C28731
+286FB50A23E012E26CA483CEE2835968CC6CAF6586C854E8F7786890763ABE99
+2822C1EE910AE51B0A69F39899406E993766034ABEDB8D955282B84D7194E204
+6410401868B4391890655E0B68108F8A714F41D9B0DA6CAF880E63EB84164E36
+78EAE9E37185D70D3FE3EF8600E351D9D55598327FB15BC01E49689147D5D0B8
+DF3B15523463C24329D251AB7F8B1322C6A426AFC978AA27FD1C4C2C3C0432FD
+173ED14F342C657F0A9165D09B33CB22BF9B10D7AD6FF075E0A7D00575CA6ACA
+4FC24DD249B472B0F7D812F37CD3311C63FF0ED922C287EBE368AAFC6289ECE6
+E52A0F23CC722EA14E492E475D9EAD2897BE707A3213F6442AE3974A33C69A1B
+DF8578075D47C61424B72E873752B6DB765A534007417560C8690CA7126748D5
+024FB3E9132E26267F4BEFE045B0A50265C3A6ADC2D9AC8A36C58E04C7257CA7
+82B3025A1D7D69B7833208BCC30B47F7B9DB1C15F8AFDCCC69CB42949530E38E
+8B98A151AA6BEAB2C9380560BDC236E660B9DD4B2C1A486E0E0D54039C9B7E99
+7EFF71AC4E07A863D36A09374AA63B12B671F334C32A0099EFEB2DE50697F5E4
+C2FB06A421D633CB7531826DE3FC00D9C051992C005A45B9EB4F0003EE294875
+B6EC2143C49D07E51AC0BF62CDCD56A94445116BBC872C61DE454596B0E23263
+4294F72B7AC189A3F6C9F1B726A8F422F4114D8835019867791531ED34767605
+305DB7CD7ABE8290DCBDF9C219F9EB6EF7EFECFAC3FF3B5DDA13B91D0B3CEE3E
+FE1E85E6028542067D149F727BE995B1028D451D8DF9BA109F5A01887DF4F0AE
+B786B4CB6F37AA98884083D055051D9371638591C3AC62BCCC474326986A21D0
+711D1642D457A30E49038645E6BF5ACB3B46D0A0E60FF2BCA7088ACE271E7376
+E2CC365A3180DA33977DBC15FB5C0AEEE6877ED6020267F65EFCA736EC2D6E6E
+7C57BEF4DEF28B5FCD8A33F5E634F421297006149536ADF669F9FAE0465697CE
+3B9B67A0651D21794FFFD966FD833BDE89DBFAB72465DFCDAC76038AB62E6599
+7310F1492CC4E3136AB7A06E6130690FAF1168EDB7123DABFC8180E7ACB21D1E
+A68AB0CC8765F61E087C11272DD62B1181530A819FCC15AA8ADB82E7B60C7F9E
+5D3C7EF78A61A0BBA9FE436211C4273976B53297ADA19E6B34E185F4E24C4090
+71AE1F9515C3D032CCD29EC1411780D4C90AEB08C67BCE1DCC6D45A6505ADA9A
+68EB5CB00173B5A6CF5B45856560798A9C6EDC1F43064FD6C54FECC27333B588
+9A35E1FEF53933AED516921E768FCE1C25DF66F45CC3854C9D82D4AAAAE9F1FC
+D5A0684596C00E4B48F40FD246CB91DA53A99E96BF7D72BE7E8A1F80777449D1
+2AF02ECB23EC42ACB06EF6E3F16FDECB75101CFE4C1C7EE92E942F4C6602A98E
+BC4FCB57DBB6E5F7DA3BC5501F371B6014187833547EB0D0C57AC9AAA7E27355
+CD3525C516D5E279E509BA54726DD9A3F7176552F808F6D3E73A484872E3135A
+BF56934C6AEC8008CD97EF53893871F0F8647677F33D586BF675D723A96BD6B0
+A0EFB8C5D93C9EF29509BE2398BFF3094F639E18CF7D27DA441DB5664D6B5E60
+BE9FADD4FAC3914B88871758CBCCBB38E8C4E72A4B53744A22D9894BCABB0144
+667F9E22DBAAD7934394469626CCD133AC2800882449FE082BDE41CDCDD4AC44
+7E20F083020EB46E59D9DBC744A4C7C11D5286C640DF888BE17A15E11C603435
+247B8D3892A888D88AEC22776E94861B98277FAC0F147CB0DC13CC7ED2E92C43
+CF845A58FEB59A570DA559C2A6084B1A44E2E6AE6BBA8A23512CB6AEBFA8A8A4
+5E9A5DE1BA9F175B77138469A90503D61DB62C2EBFB3B3E2D6522FF4F28B371D
+9E4A18C6195F3EC4FBFE0C9C1F1FF37FF0E1F8FC58EB7A58DBBEC681973EF716
+44ACB1C9DE4D2E82548A149E3D829DD3D5652F8A2AFD10A75DF0EB3FE4187063
+C88C7CFC0B3456AE1DBFF4D448FE2CBD205EEE3B727C76D2C7DED8926CCC1D40
+B566DF075326821926D92FF7B9F31B63F4DBE1A59B246E11FD06F0D2CA106895
+89F3259D6A9CC4611425ED3F494A3314E9A8FEDB74681B7F8E50FC2E04826A59
+9D1F6C6ECADF0B237872BE71F13D001E56CDE77D2DC8AEDD4471F56CFA9BC03B
+00B943B3C5D65B9F2FB053AC9A8930F46702B466C7D30AA7602FE1646D7EB045
+4CE04C8C9A68E9209812CAC5274DA6B5BA9431773AFE05B16AD6F07598337E93
+ED5B324AB15FC9BC52357B16A988C2D1447500534EB8A44CF6A03EB9CB247239
+A5C942951721E762A014D340858BDC57D1EAC94CB32881740C23995BFA3D91CC
+03CC1DD258A1097A29B0D0DD534D38B4BA0FB7B364BB9CDEE55569833B8900B1
+15F5B6B08FBD59C9DA5FC3E6C6CB7EA0486DB1EAF8C10177881AF188AE360C0F
+84F439766F7334A1F71F43FFEE23D0D7A545A426A95402D4FAD95354C6F79E9C
+688756C872C539E3FD53D92F12FAAC12569BAE2D75741D8FE2BAE684C61C0465
+48EA4A909FFE97239007815CC1976424C06A9D0CCA6CEE35574506604DD41A05
+3D84872C8F4D6C8653F2E3C1F90D66896EF1EDBBB78FF3FE86F92829BBC6FAA1
+6E327EBA28D0C623EF62928696D810CBFA72E12BA47AF369301489C4D7D70173
+4A71D089B71577E5338C3BCF637A1E262B187152CB5BA800E4B135690FAAF1AE
+E9464FCCEB38B1FDDCDE15060F51881EED476CD29FC0348A14EB5C48CED2D412
+B1F332B6BFE818D276C4D86E879B7B3B24FC3BA11FC22A44648B84DD304FA21C
+5A8A4CF56D1A4676A2C6C053E136A186D358DF383B9683234BA3CE3B4F2DFD58
+E78EA633572C9F03959E2B43BFA210E500B7178C23DC1E1FE9C10A693A79A29D
+E05DB8FDB7ADE08F2CE99E7B7A5A22C5EBA78D061ADC32122622B618AD22002F
+A04CC36F7D4AAAAFED1EC490CB1772D7B10E2E67A51FA830584DBE97BC0F2E20
+986B18B80DAEBEF08F5D145D8AC82AFBD8AEA7543E2FFC7623BF96D0AB99E1B5
+95245616F416A23D13B28361AB00753BA62C0609FC8FAEF12A4F5ADF11F58CE0
+C13CB24D3FB26E2D1DFF42E41BEDB3F0AB6F6970A76AB635B962C6B91D062D66
+15B1376E0E327EB4AB469A0663C86BED1C24607FE4CE5D6E09D6214B15628CB3
+BDE6A6BDF80206A25A5B07D1B55116C8858CD6E06AB272FA5104A3D852F04B2F
+D1A57F428859533DE8E5B7D61E53ECC5B85A807A680280A393CE9AF335A7BD0A
+C0568444439B3A0558D5F94FFF4DF4644F8B1FC6397D7F8A656A61394B631AF2
+77D43C8D06CB9CB020802578A1BF512353E632648FEA9400DD75E6803248D748
+7C84DE95977E95512723219029C03964441B2B96256A5B2B386A034A2D2B6586
+F0B73A5049FD96D5A54DA035F72FCE3F722584AF90452DD3B57DF93978A29FAE
+07CCE8872FD1C1F6B60886713FAC54D7493DC4391773C6B4F93F4AB4AFAD28FB
+2798AB8258448819FE0F3214C28227E080C7379F3B1F307B726EEAD0324790BA
+EE5A942DDE3E672DDCE377E0CC813A49E59465A91890E4CC6263A346B491A824
+C0355F1C2CFDB4724CABA263DA2DF1D9CD67779BA725C0FE7EFA2962541AC1AD
+CF100A8C0DBA44D54996387A7003DF1E72C32085A6F5EFC231EE1197F1F585EF
+F06BF997B2E11A2024F5628BE445B7F422697F27E267C8ED1CAB42F65BC88B7E
+6ED0C8D72C445691FBBC02D15455E9905C54B90646D3C2D3B741EBE943E31CCF
+63315D8FD762DDA3362C8CB30406E38FB38144E026E353C36B0459C65E66B79C
+AB289755A9BB7588E4C30ED78AA5EDAEEF32A81D040A60BB612E75FE23DDCBB5
+CD7F63FB545A0DBE2C9284CF11C34CC05C0291CDD3B94F2313A209A6E9778194
+7D20D65D69CCA1291694143193BF1D9E54FE17C49AAF74B94A321F2B33B3D38E
+DC8B6C10AF802C7950FFF1279728BA0E65EAABE0590EC9A41C68416A4450CEC5
+344E7C920E35BD047E87B27B019BD08550083D9ADFD3692FBFA17CDE56F7383B
+BC8FA281C6B5BDBF7F8515E60C4849E568335D06BF31025BD27D5A0747C85424
+3FFABCD15B690BD43FFAF11BF4ED7DACD462F36D50CE750399EA7AF7EB833D35
+0849EBA735755A0580DAE1FA3B8266FD53E313A9174CB4A1946013F812F63EAA
+980F4CF357F8BEAB360CE726E19D0EA211E21B7579453156E339AD3D2C251038
+57621F427D0B859BC44E2803256C5B5234DC3DB6D49DCA330AB7D71B23F05E2C
+BA6232C747B2654974E5C1A880E406DE54B95253AB8D7D2797C528C72FE124DD
+C5AABEB7E4C590C37D87D3DE9B1A0AF2B0E6305020295273E491C980CE55126E
+EC0A95B374A7308FDC9512CE9FE37C3774958EC2FDF9D77C21164FB19ED8D8C4
+B059093B6117B84502447975C4FFEF6B807EAA1252B84CFDFA006D97DE63960C
+4C3C08FF13F4B2D89AA214B170FCCFE509859C9288FF5802DA62D635AD28D72B
+2ED94065B7DBCC04677BADD74AF75CE546FB6CD31F44D7F4CC551571FF7B8A57
+873199143E332CCFBE78155F8481C6F13F973D611178766E1AFBC062C948327E
+7A7C7BBF4344960610D80EB280C58766E57928A35530F1401799A1FC18B09EEE
+24F2D584C779509D9B0A8566902158F8F0B9938951479277BE50C213E84D5DED
+FDB0FE395C41B51E3138F21BA90CFD8E68CD5364DF8FE270544D9650971689A4
+85419DDB9137CB3C1E39EBECEBE48F72EF1FD9E234CF31A9D9A20DACD5BAD570
+951EEDFF24ECA8A2D8ABCE3AED7DFA164DB03E964C964EEB02F699ACFF7DE100
+6287DA70A8D7A0E132AD534B693AC4E72F4845582A1A62FEBA4932F491A07C74
+63DD166FB3FE239B5A960DEB87EE0A2A9D542B6C1CD6F577FD573C1774A726FB
+FCF35A4A9A85F515D07454F43DB197EF8EBDC99BE2284324926A2481C770CEFE
+9408DACC976B24C46997B43F486A85FE5858A45D4C0764EE421021F5894586AF
+F04F827A024C043AD3662399D7B798972767E4300BE2018E948C6F7BE1F584A8
+30766A63B84F26CB7C1C1DFCBA6CD67654D7321DDC18C2DBFE9775E1E42A7C74
+6062387972E2C516D5C149FB94AE548CB6422B6D7ED1D68E5A972C37B974A65C
+18775FD907ED6B4F4CF83368785AA5E9F7BFFEC94C51A6754589B16DD61987D7
+C571AF11E56B7DB027F10A46110DDA458455B97CDD391E06D17D886E316401CD
+62D8E386EB0237426546FD64979566480D822D9180EDBF1FBDC1144E85ECA3C1
+954C6F95C78FC9CC567FE82FE08809C5A566D34F6DB51A83C998BCE23BA856E5
+38ABB64E22D8DC48F1E1C37C9AAE9271579E42C8B271D8B70C0600B2E660917A
+740A24C5CFFF44F5E750162F365EBD2A29C0AE993CEA7FDFDD78AA39ED3C965B
+B041691A4A57EB41622C8F2982C3C17D7FA9DFFBFCD296CF936BDB6E2904510C
+908FF6195971455E12298F861BDBD2ECE6D5D47E008CDA769ED08800B7E47CFB
+1F0767B2BDE7D437AA6938C3FA18C07EED739AD2A2EA28B4E597DD9F2C1EAD48
+7CC0661ABFCDE974A717145628406973EC6459F83335E0852982F390A0139495
+55599C104EF0F1339D25984A348982957B9267D81C446B5E09E56C70429AB895
+D0BF1A2734C0899D473418AA47D60E778980B69300B6DFF51A26FED4AA00D148
+37AC24F509CC5FACD0EAE0572E7CED539823FC1599FA6AD0FA7FAB6B0C4B1B94
+B10632EAAD840E7CEF7A35545AB6DB81F04959EE4A1DFD2996B47CF193139BB2
+C1CB75B8BD817256C67B7B8B8D6F41B42A385A2E660C5A41EC479158730C98AC
+EAC2E410226D59A948D219556CF98B755066BFF040E6A6D2286174CD87C116C9
+646F1CAF525C4392874EAD4DF0415E9B4638E6EC126F2D856447B142269FA169
+5D7C4222C422FC4728C7A05F88D0EAE70150B49731CCE7A85A81557567DC0FDC
+187D0E87739CB93AA581C3AD024ECD6E12BC2A3344665F7E596DFDE6FFFF04F1
+58CB836544FC7495A8DBC8BBBD3EA02E1A1A14D22698E9BB1AB17D43F1E33642
+5FF511C6C8A84814619C482AC70F5262B4297ADC53FEA762E58D1BF7E3515A25
+1C0316A26FA9141FB4907454E619A4D3B89E7490CF91E05C42C22CF7DAA45103
+885A3656C5C1170886F789A7237A3FF0981DB0512244A81843C755D3E81D0C31
+C79E914FD17226C7A7CB98DD5B899927FA012141DF2ACA0F5CFA9C4038CE5493
+F533DCB65E6A49AB04181566D30DA4CFD9A1DD854530BEC561A439F6B1354B66
+67CCFF1644E172CA43D6349D90A0979579B0D3DB32D9A08C0A919456922F4BFC
+CD0A493136014F530B9D8582A1EE24B0906C4D2287E897B32DD9D510009691D4
+E93A68CDA75DE51DFC4EB8BD55045E7583C91178DEE65AFD00A114A09F43A16C
+5901094FFA27F00246842E76BA2B33163172514346F4520733F0F343358DCF68
+29B5A3820C637FC639A028C80F961C302F527A2A00A5DAEFEF204832EF6C1E70
+2550F1EC5B5AF3A05826FE50656922A7AF604FB997BE8C622F0671A58AA1E698
+6DBBFF24C774D5BCC98DD2436105AE4DA658EC3AA377F905D54627D41EEAD912
+FD7E28A719B09A4BE9DBD75C065131186E1D64FBCAA4C8B70DCF6C4DB22D2EB2
+09A392658C3A23AF99A2DBB4A623E958E0F597697215A048F278241D497CC448
+F5193459E1AA66309AD7CA0897F6909037016BC3976E24443D09AA9511AF9B7E
+66BA33028C53EDB2003C11720DA394BBCA6318C13E1C11F10B7A9A52AF7A05D0
+D11844405EE6F1216FABEF4DE0845759864676DEDD8CDD81A08EFE4B8267675D
+4B971016C305D7AD7E2C2CB15E81AD0709F4D57BB534331627459156A9E79FE0
+E51169F4B0D977CDBC81139C18DC709AFCFF255BB05AAAEA7D539CF0E9E2B60F
+10E0C96116E566840FC99DB00CF7EEAE0577371861809784F5E810E5B4501383
+F4B04E3F92956DDDEA43FF563DF653899729A52A4E7133D2EB55FDE74C72745B
+667DA8CF4DDE4E15E0540A31C08D00B8F5F711330C289C5E741AB6D72313272B
+3053B23B3F78ABB23B8F82E81179A648E8676BDE7041D9EFEB6B2D4B1C5B851A
+A08F9BAEE095D2CB1992F8C9667688FB76489B60C4D3C94927779357E51DE5B8
+E0293CF92AFB6EDDD744A5EFEDC08CB52F3F11DBFDDA95A16857601D15F44A4B
+12A60E1681376ED56FBB021C6C6ABFAA9274AF78FA6FA156434E5B8F59573591
+0D03406B63704816DEB1CB7BD286330530E20E9DEE564244243CE1C35B86C63E
+C210C4591A159C27403196AACB5FAB1DAF3567B07F72113A84DDA71EF57A25E5
+696F32C68616C1209624A3B6BC8E3E762644960BC25ACE895DC6E981E60B45BF
+D7C0250F830C41C1EC111F9473CE3813E7D704375BE16D4C38D83A9FC70F198E
+1D68E23FB4BEB00EB5B6A7D4835580FCD30818BF46655D03722CEA391720E4D3
+C80FF26295CAC376B910A0E43F6A9FC856666F2F611AC40470A0BBD9CC6E22A7
+F79982D399C005815F88DE91EEFFF99A410E1AC7114063609477DC7599307DA4
+2DB6B6A6F274FC46794D70B190E267696B4A1E8BD0BC2EE5F06A7CC77844363C
+F0BE07A59DDAF0E32A3CA83FE6404179B01E7C5BFF2B76E1C7F555D5935CD7DA
+7F385A4FBCCE8BC043C868F6938FAF9CA163814E1E2BBEAB55E694E7428CD9B6
+D73569152E8C595E256590B39EE7A99627A860DC377B6EC71750A6FA64A72EE4
+F6489A1A5A234322D8DFDA02C8704419E0EF17493F9E3CDEFFC445736CDE71B9
+DCFBFF4A357C570E899C966858754C105F2908816ADB1858A0656C964F547CEE
+002C11BEBEA2A30E55A43120838E94994E390F298F7E4E6236EA30DE6CABBE0F
+03C8F3EA89130D3AF01E33E03AB649C3A731A5855601966BD09ED6F87BA768FB
+D68389A74DBCD7619FEC31503CC846099A571A35491AFD63097531DDC702CEDA
+BE9BD9E20303C0A6FE8E30B4EB2E27048A9415971E802C025D166324F4F30D25
+DE855A69D97437615DC3C1750FE021BD113C9767AA28AD16DF037D191928BE48
+0606FBB6663E07428BD2DC19EDD1D08D641DDDD8EC140AE69B31276CE7013DD4
+15EA07913F9B432735B196C137191C9C1CBEE5581732E91D1782A47913E42952
+45A9B0225D5D99514AC26E10FC7AE33BF096F2EC4E446CE08F5BB4E4F2872D9F
+56722077561BC7DAAFFBECCBF5C45DE8BC29939376EC700F52B43518C05B1002
+BD343941DE35187C54A4EC5C875F50C195471273171E4024805F0A02CDAA0158
+33891C3E50E179214D53D2EB466BB82A90516F4276E30067815FEB0585EB101D
+FA5B58A8AA860D2BAA73D94BC34D3F5CC328490F35B04B5D4D560A224AAF0EF0
+D666F1DC0750C17CDD109C63641DD41B8EF84A4247E4070C73295AE4EFCE3B66
+D2E291F745358407AF7C1FBBFC52677B33286965CAB5BE21ED85E63DB84986FE
+166515BDB9331E27C25D42D4444297A8AC93E3E5DCEC65AD75B121C80A94FC0F
+E206B5A4B6283544414FD3FE2FDC5BDAC0B3031EFC6D871E9A3D41278972C0F2
+F37FA49535AD6EA1ED801F4D00397EA06E4AC3D5D867D1F63067E74A6061615E
+C6E370D063CFADEE4EC16DA3BA0840D5F2C791A9A5DC469F519B87F6E2FB225D
+D1EB189C932D11758BC0710B1E1C4C33D9E5A17F65DECC6E920E61E53F596C8A
+9F32392078ABACA3C60E884770CF4004C5E0771C2629CFFD11F06431A57B267D
+423B07425D7C6154F4A6E2F018080C07A78672EAB2929B5A07422FA8BD1EF535
+94B4FDB61C836EF9E9642B7FCF22584B189DEEA061C3FDA4A6409274595B1AEB
+A04E3F1144B6D0F6648B4E2E8374BCFCF3235B610588292A4674488AF8498CA6
+F389E5D372C6C678F3AA03ECA699ED4D839B2BE8AA5B43E516A2850EB6532DDA
+757D3B3675AD7A37F79927DA46E1A03861F5ACC36BC19E2184AF0CB5346F9F9E
+12FA2BBB209944F4CDD5C6D255117743E7F23F03021886FF8069865093032452
+953C43B913B50DF01FC7CCC9281FDC26FD37FE1A2866B12F22973F4C57990EF9
+3504277C7091753AC591FB430F8E16E5E77A6639A8AB5A5F3DF8FCCC650AA39B
+B3EB181CB26CE6D18719E8ADDBBF5B81A9D5C4680BFE9DF5896B71344F4E17C3
+58C0576704A8E515162F615AE8CEE6E4909987FA7B0D6A5AB5F2D0146B96D3EA
+5F434D28A2244DA8460BB70E34EA42187223E9C889FFE783BAA7CC3DDA025D56
+888CC43CEB66FB6792DE7AC6753D2401487343FD66007E3C2C9D81B5B1612465
+37AF044A023A4EA768403A8FEFBE0F9160C705C333650B60F4EF63F9451F4361
+C433F5D790A37107BFFABC982E66E9191486FDEF9C640092F8B475456BE30681
+E3E1F3E216FF130CB52A0344B6CCAF3BBC8A327262A8C675A68BF3BDBE4CE061
+C4B8F33C3130DD6FB49E4DD8914FE7F7CDAF49F13956F86FA2B88E05EBF83DF2
+06711C8303A2B8877F5A0A9706A07C6505CE0C2AF5731D1A72B190FDE2FDC698
+ADAAD113AEDBCB841829B96A089750CEDA284182B360F687FE0196D4D43D4603
+EB9954331326527F77CC4B8D850B841187117413CC6B5F462C64A3959CC7693B
+E358EE5F2CE58F4EB42153F954981EDF869B5DA9559A4B69CC554FF39D4D4E77
+0C8CFFBA1E7893766F55B7D367B02E8F6C337FD10C22D60A6225048B01CF8C30
+86124E73A35DC54B2B68C97A3556AFCEA4E982D71257DAD041433A4A60B6CCC3
+98F4E749219D982CE35EE0BE0F953D908945712465097C6214746A864F4B52C3
+3A45DE9542A7F76ABE5155883D275498D6A5633800BA5B3B45078A52D321BF70
+14A506096C76DA29AE83A4D2204633D9CEC517CDC41FF04EE01790659588D0A9
+14B460FFBDCCDF568A303A5BB001CAD84BA60D4B2EF4D764F9887C21635B32FD
+E9BF53AC249BE88117CA54F8161F40B2FBEC6935D621DEE89FA7ACCF0CD1E8CB
+9ABA2079596EE31C7DB9EE1FFA7D499B43A91D117365D82852EA7DEF15F0ADD6
+AE864307FCBA01CDA5D9F17AA12551A060CD6FD4BB69EB09B99BD0D39C69D164
+E9573BC0E97BEF5D08A2936AEEE00BD6615EBECCB9DF9852A72821249EA3BED3
+020166D83242251D35B00F35BF822213BCCFA53372A5A9CC85AA0755E2840A68
+7E28C6BC6FCC151EBF5E8B74DE652794F312A6630F6FB891EEE4707E9259DC31
+230C42986B3C60AE7FDC542B7CB2180A871821D72248B2FFDF36E3A7ADED61F8
+DE6428B29CB0B98BA868E33246CF5A6BA12A6FBACA7436527FBE2FC6DF860A77
+5FA79538304FD552AB47E056AED3E3E6267BBD55CE52190DFD3932FFA9A850F5
+4CB7A7E938A32F18E7A86E94C3C365D0C4A85E64E0A749A005738C201B999B40
+8D9534D8317597A5D7169809BD0C829A5AF1B22E660BFAF7A4A1C81377B6AE44
+FC639CF5CED0AB54D0B639880CAEC0222D73B626A37C90DB982CADC78A01BCBB
+AD833E83EEF3C45F208A90B3AAAAAC8A25A28975675C64DCBE94FEAF96F07FEC
+3D8EA3DD2A0B776492BAF2F4D14A8AE1921C5DEE62BD385247A9536B2D8DDDDC
+1D51196E72804524A9175C93CB276069D7CD6555A2084A51FC13B503CEFA1835
+C572B64BB65203CD666FDD1C79DBED16B7EC15B37AD79602AFBE1A1FEC89C865
+DE6420E6790D59CDA4EFEFDF352CF101D2B64EEC253F13B3C854FC03370DB220
+227F67A5654E595E1C6E18A6A6AF672F0638D1B35C69759D347224DCC89223A8
+A9A6682EFAF9179AF0C7CDE0D9F991E89D258596E93F26819896C730526735BA
+681674536B7D1F8C243FA809DA6572601EC8E9665204C155D4EA516B61799080
+25627C82CF7E89BA81CEA8C865D0AAFBB7DA3C47E1508D985470E6A11C93AC68
+72F823BFAAB5011A760F369164158479690A2A696A4CDE768B520E75F9A9415D
+6C0CE866FB2BCACA7B9575E8F2658CCEB6E0DBFFEE00388A9BCD9706AC8D3F13
+B03109669E54C773BA71B93DD88B3972B48B1E30C6DDA9FC8F76ADF717373F85
+FD72E2095C983B1085C2436545C0260A5788641BA646755594CD06BBDEEB721F
+AB272E8145F81AFA2659029BCD25640BB9B406FD20
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
%%EndFont
TeXDict begin 55387786 39139632 1000 600 600 (fr-refcard.dvi)
@start /Fa 197[20 58[{}1 66.4176 /CMMI8 rf /Fb 134[35
-3[38 24 29 30 1[36 36 40 58 18 2[22 1[33 1[33 36 33 33
-36 51[26 45[{}18 66.4176 /CMTI8 rf /Fc 242[61 13[{}1
-49.8132 /CMSY6 rf /Fd 133[27 32 1[43 32 34 24 24 24 32
-34 30 34 50 18 32 1[18 34 30 19 27 34 27 34 30 10[45
-45 1[34 2[41 1[45 54 2[31 22 1[47 39 41 1[43 42 45 9[30
-30 30 1[30 30 30 30 1[18 21 18 4[18 14[27 4[30 30 18[{}52
+3[38 24 29 30 1[36 36 40 58 18 33 1[22 1[33 1[33 36 33
+33 36 51[26 45[{}19 66.4176 /CMTI8 rf /Fc 242[61 13[{}1
+49.8132 /CMSY6 rf /Fd 128[30 4[27 32 1[43 32 34 24 24
+24 32 34 30 34 50 18 32 1[18 34 30 19 27 34 27 34 30
+10[45 45 1[34 2[41 1[45 54 3[22 1[47 39 41 1[43 42 45
+9[30 1[30 1[30 30 30 30 1[18 21 18 19[27 4[30 30 18[{}50
49.8132 /CMR6 rf /Fe 135[43 1[43 45 32 32 34 43 45 41
-45 68 23 2[23 45 41 25 37 45 36 45 40 51[27 5[23 19[41
-41 5[45 12[{}26 66.4176 /CMBX8 rf /Ff 130[35 35 35 35
+45 68 23 1[25 23 45 41 25 37 45 36 45 40 12[57 45 61
+61 55 61 2[49 2[30 2[51 53 62 59 1[61 18[23 27 25[41
+41 18[{}39 66.4176 /CMBX8 rf /Ff 130[35 35 35 35 35 35
35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 35
-35 35 35 35 35 35 35 35 35 35 35 35 35 3[35 2[35 35 35
-1[35 2[35 35 4[35 35 35 35 35 35 35 35 35 35 1[35 1[35
-4[35 35 35 35 35 35 35 35 35 35 35 35 35 35 35 1[35 35
-35 35 35 33[{}74 66.4176 /CMTT8 rf /Fg 135[60 1[60 64
-45 45 47 60 64 57 64 95 32 2[32 64 57 35 53 64 51 64
-56 2[57 7[87 1[80 64 86 86 78 86 1[109 69 1[59 43 2[72
-75 88 83 1[87 19[38 5[32 19[57 57 5[64 12[{}43 99.6264
-/CMBX10 rf /Fh 132[35 31 37 37 51 37 39 27 28 28 37 39
-35 39 59 20 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35
-3[53 2[53 1[39 52 1[48 1[53 1[44 2[25 1[55 46 48 54 51
-1[53 6[20 35 6[35 35 2[20 24 20 2[27 27 20 4[35 6[55
-7[35 35 1[20 1[59 1[39 41 11[{}61 66.4176 /CMR8 rf /Fi
-139[53 54 57 3[76 115 6[42 63 76 61 1[67 11[106 6[108
-6[108 1[90 1[99 47[69 19[{}16 119.552 /CMBX10 rf end
+35 35 35 35 35 35 35 35 35 35 35 3[35 2[35 35 35 1[35
+2[35 35 4[35 35 35 35 35 35 35 35 35 35 1[35 1[35 4[35
+35 35 35 35 35 35 35 35 35 35 35 35 35 35 1[35 35 35
+35 35 33[{}74 66.4176 /CMTT8 rf /Fg 135[60 1[60 64 45
+45 47 60 64 57 64 95 32 2[32 64 57 35 53 64 51 64 56
+2[57 7[87 1[80 64 86 86 78 86 1[109 69 1[59 43 2[72 75
+88 83 1[87 19[38 5[32 19[57 57 5[64 12[{}43 99.6264 /CMBX10
+rf /Fh 132[35 31 37 37 1[37 39 27 28 28 37 39 35 39 59
+20 1[22 20 39 35 22 31 39 31 39 35 2[35 1[35 1[43 1[53
+1[53 53 51 39 52 55 48 55 53 65 44 1[36 25 1[55 46 48
+54 51 50 53 6[20 35 6[35 35 1[35 20 24 20 2[27 27 20
+4[35 6[55 7[35 35 1[20 1[59 1[39 41 11[{}68 66.4176 /CMR8
+rf /Fi 139[53 54 57 3[76 115 6[42 63 76 61 1[67 11[106
+6[108 6[108 1[90 1[99 47[69 19[{}16 119.552 /CMBX10 rf
+end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
@landscape end
%%EndSetup
%%Page: 1 1
-TeXDict begin @landscape 1 0 bop -540 -364 a Fi(Carte)46
-b(de)g(r)m(\023)-66 b(ef)m(\023)g(erence)46 b(de)g(GNU)f(Emacs)205
--280 y Fh(\(p)r(our)24 b(la)f(v)n(ersion)h(22\))-450
--101 y Fg(Lancemen)m(t)36 b(d'Emacs)-450 12 y Fh(P)n(our)22
-b(lancer)h(GNU)g(Emacs)f(22,)h(il)f(su\016t)h(de)g(tap)r(er)g(son)f
-(nom)h(:)31 b Ff(emacs)-450 106 y Fh(P)n(our)24 b(c)n(harger)g(un)g
-(\014c)n(hier)f(\022)-35 b(a)22 b(\023)-33 b(editer,)24
-b(v)n(oir)f(Fic)n(hiers,)g(ci-dessous.)-450 280 y Fg(Quitter)37
-b(Emacs)-450 434 y Fh(susp)r(end)24 b(Emacs)g(\(ou)h(l'iconi\014e)e
-(sous)h(X\))379 b Ff(C-z)-450 540 y Fh(quitter)24 b(d)n(\023)-33
-b(e\014nitiv)n(emen)n(t)26 b(Emacs)616 b Ff(C-x)36 b(C-c)-450
-731 y Fg(Fic)m(hiers)-450 866 y Fe(lire)23 b Fh(un)h(\014c)n(hier)f
-(dans)h(Emacs)694 b Ff(C-x)36 b(C-f)-450 972 y Fe(sauv)n(egarder)22
-b Fh(un)i(\014c)n(hier)g(sur)f(disque)439 b Ff(C-x)36
-b(C-s)-450 1078 y Fh(sauv)n(egarder)25 b Fe(tous)e Fh(les)g(\014c)n
-(hiers)633 b Ff(C-x)36 b(s)-450 1184 y Fe(ins)n(\023)-39
-b(erer)23 b Fh(le)h(con)n(ten)n(u)h(d'un)f(autre)g(\014c)n(hier)g(dans)
-g(ce)-379 1291 y(tamp)r(on)1204 b Ff(C-x)36 b(i)-450
-1397 y Fh(remplacer)24 b(ce)g(\014c)n(hier)g(par)f(le)h(\014c)n(hier)f
-(v)n(oulu)312 b Ff(C-x)36 b(C-v)-452 1503 y Fh(\023)-33
-b(ecrire)23 b(le)h(tamp)r(on)g(dans)g(un)g(\014c)n(hier)g(donn)n(\023)
--33 b(e)324 b Ff(C-x)36 b(C-w)-450 1609 y Fh(bascule)24
-b(du)g(mo)r(de)g(lecture-seule)h(du)f(tamp)r(on)229 b
-Ff(C-x)36 b(C-q)-450 1800 y Fg(Obtenir)h(de)g(l'aide)-450
-1913 y Fh(Le)27 b(syst)n(\022)-33 b(eme)27 b(d'aide)g(est)g(simple.)40
+TeXDict begin @landscape 1 0 bop -384 -421 a Fi(Carte)46
+b(de)g(r)m(\023)-66 b(ef)m(\023)g(erence)46 b(de)g(GNU)f(Emacs)361
+-313 y Fh(\(p)r(our)24 b(la)f(v)n(ersion)h(22\))-294
+-135 y Fg(Lancer)37 b(Emacs)-294 16 y Fh(P)n(our)24 b(lancer)f(GNU)h
+(Emacs)g(22,)f(tap)r(ez)j(juste)e(son)f(nom)h(:)31 b
+Ff(emacs)p Fh(.)-294 190 y Fg(Quitter)37 b(Emacs)-294
+342 y Fh(Susp)r(endre)25 b(Emacs)e(\(ou)i(l'iconi\014er)e(sous)g(X\))
+211 b Ff(C-z)-294 421 y Fh(Quitter)24 b(d)n(\023)-33
+b(e\014nitiv)n(emen)n(t)26 b(Emacs)527 b Ff(C-x)36 b(C-c)-294
+596 y Fg(Fic)m(hiers)-294 747 y Fe(Lire)23 b Fh(un)h(\014c)n(hier)986
+b Ff(C-x)36 b(C-f)-294 827 y Fe(Sauv)n(egarder)22 b Fh(un)i(\014c)n
+(hier)691 b Ff(C-x)36 b(C-s)-294 906 y Fh(Sauv)n(egarder)25
+b Fe(tous)e Fh(les)g(\014c)n(hiers)551 b Ff(C-x)36 b(s)-294
+986 y Fe(Ins)n(\023)-39 b(erer)24 b Fh(un)g(\014c)n(hier)g(sous)g(le)f
+(p)r(oin)n(t)h(\(curseur\))165 b Ff(C-x)36 b(i)-294 1066
+y Fh(Remplacer)24 b(le)f(\014c)n(hier)h(par)g(un)g(autre)g(\014c)n
+(hier)208 b Ff(C-x)36 b(C-v)-294 1146 y Fh(Sauv)n(egarder)25
+b(sous)f(un)g(autre)g(nom)g(de)g(\014c)n(hier)163 b Ff(C-x)36
+b(C-w)-294 1225 y Fh(Basculer)24 b(en)g(mo)r(de)g(lecture)g(seule)490
+b Ff(C-x)36 b(C-q)-294 1402 y Fg(Obtenir)h(de)g(l'aide)-294
+1553 y Fh(Le)27 b(syst)n(\022)-33 b(eme)27 b(d'aide)g(est)g(simple.)40
b(F)-6 b(aites)27 b Ff(C-h)h Fh(\(ou)f Ff(F1)p Fh(\))h(et)f(suiv)n(ez)g
-(les)-450 1982 y(instructions.)38 b(Si)26 b(v)n(ous)g(d)n(\023)-33
-b(ebutez,)28 b(faites)e Ff(C-h)36 b(t)26 b Fh(p)r(our)g(suivre)g(un)g
-Fe(di-)-450 2048 y(dacticiel)p Fh(.)-450 2154 y(supprimer)d(la)g(fen)n
-(^)-33 b(etre)24 b(d'aide)682 b Ff(C-x)36 b(1)-450 2260
-y Fh(faire)23 b(d)n(\023)-33 b(e\014ler)24 b(la)f(fen)n(^)-33
-b(etre)24 b(d'aide)645 b Ff(C-M-v)-450 2395 y Fh(aprop)r(os)24
-b(:)35 b(mon)n(trer)24 b(les)f(commandes)i(con)n(tenan)n(t)-379
-2501 y(une)f(certaine)h(c)n(ha)-8 b(^)-27 b(\020ne)847
-b Ff(C-h)36 b(a)-450 2608 y Fh(d)n(\023)-33 b(ecrire)23
-b(la)h(fonction)g(lanc)n(\023)-33 b(ee)25 b(par)f(une)g(touc)n(he)258
-b Ff(C-h)36 b(k)-450 2714 y Fh(d)n(\023)-33 b(ecrire)23
-b(une)i(fonction)898 b Ff(C-h)36 b(f)-450 2820 y Fh(obtenir)24
-b(des)g(informations)f(sp)n(\023)-33 b(eci\014ques)25
-b(au)f(mo)r(de)124 b Ff(C-h)36 b(m)-450 3011 y Fg(R)n(\023)-55
-b(ecup)n(\023)g(eration)36 b(des)h(erreurs)-450 3165
-y Fe(a)n(v)n(orter)21 b Fh(une)k(commande)f(partiellemen)n(t)h(tap)n
-(\023)-33 b(ee)-379 3271 y(ou)24 b(ex)n(\023)-33 b(ecut)n(\023)g(ee)
-1084 b Ff(C-g)-450 3377 y Fe(r)n(\023)-39 b(ecup)n(\023)g(erer)24
-b Fh(les)f(\014c)n(hier)h(p)r(erdus)g(par)f(un)-379 3483
-y(crash)g(du)h(syst)n(\022)-33 b(eme)669 b Ff(M-x)36
-b(recover-session)-450 3590 y Fe(ann)n(uler)23 b Fh(une)h(mo)r
-(di\014cation)h(non)f(souhait)n(\023)-33 b(ee)16 b Ff(C-x)36
-b(u,)g(C-_)g Fh(ou)g Ff(C-/)-450 3696 y Fh(restaurer)24
-b(un)f(tamp)r(on)i(a)n(v)n(ec)g(son)f(con)n(ten)n(u)-379
-3802 y(initial)1015 b Ff(M-x)36 b(revert-buffer)-450
-3908 y Fh(r)n(\023)-33 b(ea\016c)n(her)24 b(un)e(\023)-33
-b(ecran)24 b(p)r(erturb)n(\023)-33 b(e)653 b Ff(C-l)-341
-4131 y Fd(c)-358 4133 y Fc(\015)20 b Fd(2007)j(F)-5 b(ree)21
+(les)-294 1633 y(instructions.)i(Si)16 b(v)n(ous)g(d)n(\023)-33
+b(ebutez,)19 b(faites)d Ff(C-h)36 b(t)17 b Fh(p)r(our)f(un)g
+Fe(didacticiel)p Fh(.)-294 1741 y(Supprimer)23 b(la)h(fen)n(^)-33
+b(etre)24 b(d'aide)599 b Ff(C-x)36 b(1)-294 1821 y Fh(F)-6
+b(aire)23 b(d)n(\023)-33 b(e\014ler)24 b(la)g(fen)n(^)-33
+b(etre)24 b(d'aide)555 b Ff(C-M-v)-294 1929 y Fh(Rec)n(herc)n(her)25
+b(des)f(commandes)g(selon)g(une)g(c)n(ha)-8 b(^)-27 b(\020ne)73
+b Ff(C-h)36 b(a)-294 2009 y Fh(D)n(\023)-33 b(ecrire)23
+b(la)h(fonction)g(asso)r(ci)n(\023)-33 b(ee)24 b(\022)-35
+b(a)24 b(une)h(touc)n(he)185 b Ff(C-h)36 b(k)-294 2088
+y Fh(D)n(\023)-33 b(ecrire)23 b(une)h(fonction)813 b
+Ff(C-h)36 b(f)-294 2168 y Fh(Obtenir)24 b(des)g(informations)f(relativ)
+n(es)h(au)g(mo)r(de)102 b Ff(C-h)36 b(m)-294 2333 y Fg(R)n(\023)-55
+b(ecup)n(\023)g(eration)36 b(sur)i(erreurs)-294 2485
+y Fe(Abandonner)24 b Fh(une)g(commande)517 b Ff(C-g)-294
+2564 y Fe(R)n(\023)-39 b(ecup)n(\023)g(erer)24 b Fh(les)f(\014c)n
+(hiers)h(apr)n(\022)-33 b(es)24 b(un)g(crash)72 b Ff(M-x)36
+b(recover-session)-294 2644 y Fe(Ann)n(uler)24 b Fh(une)g(mo)r
+(di\014cation)473 b Ff(C-x)36 b(u,)g(C-_)g Fh(ou)g Ff(C-/)-294
+2724 y Fh(Ann)n(uler)24 b(toutes)h(les)e(mo)r(di\014cations)305
+b Ff(M-x)36 b(revert-buffer)-294 2803 y Fh(R)n(\023)-33
+b(ea\016c)n(her)24 b(un)e(\023)-33 b(ecran)25 b(p)r(erturb)n(\023)-33
+b(e)557 b Ff(C-l)-294 2978 y Fg(Rec)m(herc)m(he)36 b(incr)n(\023)-55
+b(emen)m(tale)-294 3129 y Fh(Rec)n(herc)n(her)25 b(en)f(a)n(v)l(an)n(t)
+819 b Ff(C-s)-294 3209 y Fh(Rec)n(herc)n(her)25 b(en)f(arri)n(\022)-33
+b(ere)783 b Ff(C-r)-294 3289 y Fh(Rec)n(herc)n(her)25
+b(en)f(a)n(v)l(an)n(t)h(\(expression)f(rationnelle\))75
+b Ff(C-M-s)-294 3368 y Fh(Rec)n(herc)n(her)17 b(en)g(arri)n(\022)-33
+b(ere)15 b(\(expression)i(rationnelle\))71 b Ff(C-M-r)-294
+3477 y Fh(Utiliser)22 b(la)i(c)n(ha)-8 b(^)-27 b(\020ne)24
+b(de)g(rec)n(herc)n(he)h(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)166
+b Ff(M-p)-294 3556 y Fh(Utiliser)22 b(la)i(c)n(ha)-8
+b(^)-27 b(\020ne)24 b(de)g(rec)n(herc)n(he)h(suiv)l(an)n(te)241
+b Ff(M-n)-294 3636 y Fh(Quitter)24 b(la)f(rec)n(herc)n(he)i(incr)n
+(\023)-33 b(emen)n(tale)412 b Ff(RET)-294 3716 y Fh(Ann)n(uler)24
+b(l'e\013et)g(du)g(dernier)f(caract)n(\022)-33 b(ere)357
+b Ff(DEL)-294 3795 y Fh(Ann)n(uler)24 b(la)f(rec)n(herc)n(he)i(en)f
+(cours)526 b Ff(C-g)-294 3904 y Fh(Refaites)34 b Ff(C-s)h
+Fh(ou)f Ff(C-r)h Fh(p)r(our)f(r)n(\023)-33 b(ep)n(\023)g(eter)34
+b(la)g(rec)n(herc)n(he)h(dans)f(une)h(des)-294 3983 y(directions.)42
+b(En)28 b(cours)f(de)h(rec)n(herc)n(he,)h Ff(C-g)f Fh(e\013ace)h(les)e
+(derniers)f(car-)-294 4063 y(act)n(\022)-33 b(eres)25
+b(et)f(ne)g(conserv)n(e)h(que)f(le)g(pr)n(\023)-33 b(e\014xe)24
+b(d)n(\023)-33 b(ej\022)e(a)24 b(trouv)n(\023)-33 b(e.)-185
+4254 y Fd(c)-202 4256 y Fc(\015)20 b Fd(2007)j(F)-5 b(ree)21
b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)27 b(P)n(ermissions)21
-b(au)g(dos.)27 b(v2.3)1746 -364 y Fg(Rec)m(herc)m(he)36
-b(incr)n(\023)-55 b(emen)m(tale)1746 -230 y Fh(rec)n(herc)n(her)24
-b(v)n(ers)g(l'a)n(v)l(an)n(t)823 b Ff(C-s)1746 -123 y
-Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'arri)n(\022)-33
-b(ere)787 b Ff(C-r)1746 -17 y Fh(rec)n(herc)n(her)24
-b(v)n(ers)g(l'a)n(v)l(an)n(t)g(par)g(expression)1817
-89 y(rationnelle)1115 b Ff(C-M-s)1746 196 y Fh(rec)n(herc)n(her)24
-b(v)n(ers)g(l'arri)n(\022)-33 b(ere)22 b(par)h(expression)1817
-302 y(rationnelle)1115 b Ff(C-M-r)1746 437 y Fh(s)n(\023)-33
-b(electionner)25 b(la)e(c)n(ha)-8 b(^)-27 b(\020ne)25
-b(de)f(rec)n(herc)n(he)h(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)101
-b Ff(M-p)1746 543 y Fh(s)n(\023)-33 b(electionner)25
-b(la)e(c)n(ha)-8 b(^)-27 b(\020ne)25 b(de)f(rec)n(herc)n(he)h(suiv)l
-(an)n(te)176 b Ff(M-n)1746 649 y Fh(sortir)23 b(de)h(la)f(rec)n(herc)n
-(he)i(incr)n(\023)-33 b(emen)n(tale)451 b Ff(RET)1746
-755 y Fh(ann)n(uler)24 b(l'e\013et)g(du)g(dernier)f(caract)n(\022)-33
-b(ere)446 b Ff(DEL)1746 862 y Fh(ann)n(uler)24 b(la)f(rec)n(herc)n(he)i
-(en)f(cours)615 b Ff(C-g)1746 972 y Fh(Refaites)17 b
-Ff(C-s)g Fh(ou)g Ff(C-r)h Fh(p)r(our)e(r)n(\023)-33 b(ep)n(\023)g(eter)
-18 b(la)e(rec)n(herc)n(he)i(dans)f(une)g(direction)1746
-1038 y(quelconque.)67 b(Si)34 b(Emacs)h(est)h(encore)g(en)f(train)g(de)
-g(c)n(herc)n(her,)j Ff(C-g)1746 1105 y Fh(n'ann)n(ule)24
-b(que)h(ce)f(qui)f(n'a)h(pas)e(\023)-33 b(et)n(\023)g(e)25
-b(fait.)1746 1280 y Fg(D)n(\023)-55 b(eplacemen)m(ts)1746
-1409 y Fe(en)n(tit)n(\023)-39 b(e)26 b(sur)i(laquelle)e(se)h(d)n(\023)
--39 b(eplacer)210 b(en)28 b(arri)n(\022)-39 b(ere)69
-b(en)27 b(a)n(v)-5 b(an)n(t)1746 1475 y Fh(caract)n(\022)-33
-b(ere)992 b Ff(C-b)313 b(C-f)1746 1531 y Fh(mot)1148
-b Ff(M-b)313 b(M-f)1746 1586 y Fh(ligne)1124 b Ff(C-p)313
-b(C-n)1746 1658 y Fh(aller)23 b(au)h(d)n(\023)-33 b(ebut)25
-b(\(ou)f(\022)-35 b(a)24 b(la)g(\014n\))g(de)g(la)f(ligne)105
-b Ff(C-a)313 b(C-e)1746 1727 y Fh(phrase)1069 b Ff(M-a)313
-b(M-e)1746 1793 y Fh(paragraphe)925 b Ff(M-{)313 b(M-})1746
-1858 y Fh(page)1129 b Ff(C-x)36 b([)242 b(C-x)36 b(])1746
-1922 y Fh(s-expression)901 b Ff(C-M-b)243 b(C-M-f)1746
-1988 y Fh(fonction)1021 b Ff(C-M-a)243 b(C-M-e)1746 2044
-y Fh(aller)23 b(au)h(d)n(\023)-33 b(ebut)25 b(\(ou)f(\022)-35
-b(a)24 b(la)g(\014n\))g(du)g(tamp)r(on)84 b Ff(M-<)313
-b(M->)1746 2166 y Fh(passer)24 b(\022)-35 b(a)23 b(l')n(\023)-33
-b(ecran)24 b(suiv)l(an)n(t)793 b Ff(C-v)1746 2273 y Fh(passer)24
-b(\022)-35 b(a)23 b(l')n(\023)-33 b(ecran)24 b(pr)n(\023)-33
-b(ec)n(\023)g(eden)n(t)718 b Ff(M-v)1746 2379 y Fh(d)n(\023)-33
-b(e\014ler)24 b(l')n(\023)-33 b(ecran)23 b(v)n(ers)h(la)f(droite)668
-b Ff(C-x)36 b(<)1746 2485 y Fh(d)n(\023)-33 b(e\014ler)24
-b(l')n(\023)-33 b(ecran)23 b(v)n(ers)h(la)f(gauc)n(he)640
-b Ff(C-x)36 b(>)1746 2591 y Fh(placer)24 b(la)f(ligne)h(couran)n(te)h
-(au)f(cen)n(tre)h(de)f(l')n(\023)-33 b(ecran)162 b Ff(C-u)36
-b(C-l)1746 2782 y Fg(D)n(\023)-55 b(etruire)36 b(et)i(supprimer)1746
-2911 y Fe(en)n(tit)n(\023)-39 b(e)26 b(\022)-40 b(a)26
-b(supprimer)648 b(en)28 b(arri)n(\022)-39 b(ere)69 b(en)28
-b(a)n(v)-5 b(an)n(t)1746 2981 y Fh(caract)n(\022)-33
-b(ere)25 b(\(suppression,)f(pas)g(destruction\))84 b
-Ff(DEL)313 b(C-d)1746 3045 y Fh(mot)1187 b Ff(M-DEL)243
-b(M-d)1746 3101 y Fh(ligne)24 b(\(jusqu'\022)-35 b(a)23
-b(la)h(\014n\))685 b Ff(M-0)37 b(C-k)171 b(C-k)1746 3170
-y Fh(phrase)1108 b Ff(C-x)37 b(DEL)171 b(M-k)1746 3234
-y Fh(s-expression)940 b Ff(M--)37 b(C-M-k)101 b(C-M-k)1746
-3353 y Fh(d)n(\023)-33 b(etruire)24 b(une)g Fe(r)n(\023)-39
-b(egion)890 b Ff(C-w)1746 3459 y Fh(copier)24 b(une)g(r)n(\023)-33
-b(egion)24 b(dans)g(le)f(kill)g(ring)477 b Ff(M-w)1746
-3565 y Fh(d)n(\023)-33 b(etruire)24 b(jusqu'\022)-35
-b(a)23 b(l'o)r(ccurrence)h(suiv)l(an)n(te)h(de)f Fb(c)l(ar)147
-b Ff(M-z)36 b Fb(c)l(ar)1746 3700 y Fh(r)n(\023)-33 b(ecup)n(\023)g
-(erer)24 b(la)f(derni)n(\022)-33 b(ere)24 b(c)n(hose)h(d)n(\023)-33
-b(etruite)423 b Ff(C-y)1746 3807 y Fh(remplacer)24 b(la)f(derni)n(\022)
--33 b(ere)24 b(r)n(\023)-33 b(ecup)n(\023)g(eration)24
-b(par)g(ce)g(qui)1817 3913 y(a)d(\023)-33 b(et)n(\023)g(e)25
-b(d)n(\023)-33 b(etruit)24 b(a)n(v)l(an)n(t)868 b Ff(M-y)3942
--364 y Fg(Marquer)3942 -210 y Fh(placer)24 b(la)f(marque)h(ici)901
-b Ff(C-@)36 b Fh(ou)f Ff(C-SPC)3940 -104 y Fh(\023)-33
-b(ec)n(hanger)25 b(le)f(p)r(oin)n(t)g(et)g(la)g(marque)570
-b Ff(C-x)36 b(C-x)3942 31 y Fh(placer)24 b(la)f(marque)h
-Fb(ar)l(g)30 b Fe(mots)23 b Fh(plus)g(loin)388 b Ff(M-@)3942
-137 y Fh(marquer)23 b(le)h Fe(paragraphe)755 b Ff(M-h)3942
-243 y Fh(marquer)23 b(la)h Fe(page)989 b Ff(C-x)36 b(C-p)3942
-350 y Fh(marquer)23 b(la)h Fe(s-expression)724 b Ff(C-M-@)3942
-456 y Fh(marquer)23 b(la)h Fe(fonction)864 b Ff(C-M-h)3942
-562 y Fh(marquer)23 b(tout)i(le)f Fe(tamp)r(on)730 b
-Ff(C-x)36 b(h)3942 753 y Fg(Remplacemen)m(t)g(in)m(teractif)3942
-907 y Fh(remplacer)24 b(in)n(teractiv)n(emen)n(t)h(une)g(c)n(ha)-8
-b(^)-27 b(\020ne)24 b(de)g(texte)86 b Ff(M-\045)3942
-1013 y Fh(en)24 b(utilisan)n(t)g(les)f(expressions)4013
-1119 y(rationnelles)594 b Ff(M-x)36 b(query-replace-regexp)3942
-1230 y Fh(Les)22 b(r)n(\023)-33 b(ep)r(onses)23 b(admises)f(dans)h(le)f
-(mo)r(de)h(de)g(remplacemen)n(t)h(in)n(teractif)3942
-1285 y(son)n(t)g(:)3942 1391 y Fe(remplacer)f Fh(celle-l\022)-35
-b(a,)22 b(passer)i(\022)-35 b(a)24 b(la)f(suiv)l(an)n(te)280
-b Ff(SPC)3942 1498 y Fh(remplacer)24 b(celle-l\022)-35
-b(a,)22 b(rester)i(l\022)-35 b(a)679 b Ff(,)3942 1604
-y Fe(passer)23 b Fh(\022)-35 b(a)24 b(la)g(suiv)l(an)n(te)g(sans)g
-(remplacer)400 b Ff(DEL)3942 1710 y Fh(remplacer)24 b(toutes)h(les)e
-(corresp)r(ondances)4013 1816 y(suiv)l(an)n(tes)1162
-b Ff(!)3942 1923 y Fe(rev)n(enir)23 b Fh(\022)-35 b(a)24
-b(la)f(corresp)r(ondance)i(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)279
-b Ff(^)3942 2029 y Fe(sortir)22 b Fh(du)i(remplacemen)n(t)h(in)n
-(teractif)460 b Ff(RET)3942 2135 y Fh(en)n(trer)24 b(dans)g(l')n(\023)
--33 b(edition)23 b(r)n(\023)-33 b(ecursiv)n(e)24 b(\()p
-Ff(C-M-c)h Fh(p)r(our)4013 2241 y(sortir\))1247 b Ff(C-r)3942
-2432 y Fg(F)-10 b(en)n(^)-55 b(etres)37 b(m)m(ultiples)3942
-2561 y Fh(Lorsqu'il)25 b(y)i(a)f(deux)i(commandes,)g(la)e(seconde)i
-(est)f(une)g(commande)3942 2627 y(iden)n(tique)e(\022)-35
-b(a)24 b(la)f(premi)n(\022)-33 b(ere)23 b(p)r(our)h(un)g(cadre)g(au)g
-(lieu)f(d'une)i(fen)n(^)-33 b(etre.)3942 2721 y(supprimer)23
-b(toutes)i(les)e(autres)h(fen)n(^)-33 b(etres)117 b Ff(C-x)36
-b(1)212 b(C-x)37 b(5)e(1)3942 2787 y Fh(diviser)23 b(la)g(fen)n(^)-33
-b(etre)25 b(horizon)n(talemen)n(t)184 b Ff(C-x)36 b(2)212
-b(C-x)37 b(5)e(2)3942 2843 y Fh(supprimer)23 b(cette)i(fen)n(^)-33
-b(etre)499 b Ff(C-x)36 b(0)212 b(C-x)37 b(5)e(0)3942
-2962 y Fh(diviser)23 b(la)g(fen)n(^)-33 b(etre)25 b(v)n(erticalemen)n
-(t)561 b Ff(C-x)36 b(3)3942 3096 y Fh(faire)23 b(d)n(\023)-33
-b(e\014ler)24 b(l'autre)f(fen)n(^)-33 b(etre)708 b Ff(C-M-v)3942
-3207 y Fh(placer)24 b(le)f(curseur)h(dans)g(une)g(autre)h(fen)n(^)-33
-b(etre)25 b Ff(C-x)36 b(o)212 b(C-x)37 b(5)e(o)3942 3273
-y Fh(s)n(\023)-33 b(electionner)25 b(le)e(tamp)r(on)i(dans)4025
-3338 y(l'autre)f(fen)n(^)-33 b(etre)731 b Ff(C-x)36 b(4)g(b)141
-b(C-x)37 b(5)e(b)3942 3394 y Fh(a\016c)n(her)24 b(le)g(tamp)r(on)g
-(dans)g(l'autre)g(fen)n(^)-33 b(etre)69 b Ff(C-x)36 b(4)g(C-o)71
-b(C-x)37 b(5)e(C-o)3942 3460 y Fh(c)n(harger)24 b(un)g(\014c)n(hier)g
-(dans)g(l'autre)f(fen)n(^)-33 b(etre)89 b Ff(C-x)36 b(4)g(f)141
-b(C-x)37 b(5)e(f)3942 3525 y Fh(c)n(harger)24 b(un)g(\014c)n(hier)g(en)
-g(lecture)g(seule)4025 3591 y(dans)g(l'autre)g(fen)n(^)-33
-b(etre)566 b Ff(C-x)36 b(4)g(r)141 b(C-x)37 b(5)e(r)3942
-3647 y Fh(lancer)24 b(Dired)f(dans)h(l'autre)g(fen)n(^)-33
-b(etre)246 b Ff(C-x)36 b(4)g(d)141 b(C-x)37 b(5)e(d)3942
-3703 y Fh(trouv)n(er)24 b(un)g(tag)h(dans)f(l'autre)f(fen)n(^)-33
-b(etre)179 b Ff(C-x)36 b(4)g(.)141 b(C-x)37 b(5)e(.)3942
-3821 y Fh(agrandir)23 b(la)h(fen)n(^)-33 b(etre)941 b
-Ff(C-x)36 b(^)3942 3928 y Fh(rap)r(etisser)23 b(la)h(fen)n(^)-33
-b(etre)903 b Ff(C-x)36 b({)3940 4034 y Fh(\023)-33 b(elargir)23
-b(la)g(fen)n(^)-33 b(etre)1004 b Ff(C-x)36 b(})p eop
-end
-%%Page: 2 2
-TeXDict begin @landscape 2 1 bop -450 -364 a Fg(F)-10
-b(ormater)-450 -268 y Fh(inden)n(ter)24 b(la)g Fe(ligne)f
-Fh(couran)n(te)i(\(d)n(\023)-33 b(ep)r(end)25 b(du)f(mo)r(de\))109
-b Ff(TAB)-450 -161 y Fh(inden)n(ter)24 b(la)g Fe(r)n(\023)-39
-b(egion)22 b Fh(couran)n(te)k(\(d)n(\023)-33 b(ep)r(end)25
-b(du)-379 -55 y(mo)r(de\))1247 b Ff(C-M-\\)-450 51 y
-Fh(inden)n(ter)24 b(la)g Fe(s-expression)g Fh(couran)n(te)h(\(d)n(\023)
--33 b(ep)r(end)-379 157 y(du)24 b(mo)r(de\))1145 b Ff(C-M-q)-450
-264 y Fh(inden)n(ter)24 b(la)g(r)n(\023)-33 b(egion)24
-b(sur)f Fb(ar)l(g)30 b Fh(colonnes)443 b Ff(C-x)36 b(TAB)-450
-389 y Fh(ins)n(\023)-33 b(erer)23 b(un)h(newline)g(apr)n(\022)-33
-b(es)23 b(le)h(p)r(oin)n(t)507 b Ff(C-o)-450 495 y Fh(d)n(\023)-33
-b(eplacer)24 b(le)g(reste)g(de)g(la)f(ligne)h(v)n(ers)g(le)f(bas)326
-b Ff(C-M-o)-450 601 y Fh(supprimer)23 b(les)g(lignes)g(blanc)n(hes)i
-(autour)g(du)e(p)r(oin)n(t)105 b Ff(C-x)36 b(C-o)-450
-708 y Fh(joindre)23 b(la)h(ligne)f(\022)-35 b(a)24 b(la)f(pr)n(\023)-33
-b(ec)n(\023)g(eden)n(te)26 b(\(\022)-35 b(a)25 b(la)e(suiv)l(an)n(te)
--379 814 y(a)n(v)n(ec)h(arg\))1161 b Ff(M-^)-450 920
-y Fh(supprimer)23 b(tous)h(les)f(espaces)i(autour)g(du)f(p)r(oin)n(t)
-184 b Ff(M-\\)-450 1027 y Fh(mettre)24 b(exactemen)n(t)j(un)d(espace)h
-(\022)-35 b(a)24 b(l'emplacemen)n(t)-379 1133 y(du)g(p)r(oin)n(t)1178
-b Ff(M-SPC)-450 1258 y Fh(remplir)22 b(le)i(paragraphe)845
-b Ff(M-q)-450 1364 y Fh(placer)24 b(la)f(marge)h(droite)833
-b Ff(C-x)36 b(f)-450 1471 y Fh(d)n(\023)-33 b(e\014nir)24
-b(le)f(pr)n(\023)-33 b(e\014xe)24 b(par)g(lequel)g(commencera)-379
-1577 y(c)n(haque)h(ligne)1060 b Ff(C-x)36 b(.)-450 1702
-y Fh(d)n(\023)-33 b(e\014nir)24 b(la)f(fon)n(te)1061
-b Ff(M-o)-450 1845 y Fg(Mo)s(di\014er)37 b(la)h(casse)-450
-1941 y Fh(mettre)24 b(le)g(mot)g(en)g(ma)t(juscules)634
-b Ff(M-u)-450 2048 y Fh(mettre)24 b(le)g(mot)g(en)g(min)n(uscules)638
-b Ff(M-l)-450 2154 y Fh(mettre)24 b(le)g(mot)g(en)g(capitales)704
-b Ff(M-c)-450 2279 y Fh(mettre)24 b(la)g(r)n(\023)-33
-b(egion)24 b(en)g(ma)t(juscules)563 b Ff(C-x)36 b(C-u)-450
-2386 y Fh(mettre)24 b(la)g(r)n(\023)-33 b(egion)24 b(en)g(min)n
-(uscules)567 b Ff(C-x)36 b(C-l)-450 2529 y Fg(Le)i(mini-tamp)s(on)-450
-2620 y Fh(Les)24 b(touc)n(hes)h(suiv)l(an)n(tes)g(son)n(t)f
-(utilisables)f(dans)h(le)g(mini-tamp)r(on)f(:)-450 2729
-y(compl)n(\023)-33 b(eter)24 b(autan)n(t)i(que)e(p)r(ossible)587
-b Ff(TAB)-450 2835 y Fh(compl)n(\023)-33 b(eter)24 b(un)g(mot)963
-b Ff(SPC)-450 2941 y Fh(compl)n(\023)-33 b(eter)24 b(et)h(ex)n(\023)-33
-b(ecuter)848 b Ff(RET)-450 3048 y Fh(mon)n(trer)24 b(les)f(compl)n
-(\023)-33 b(etions)25 b(p)r(ossibles)481 b Ff(?)-450
-3154 y Fh(rec)n(herc)n(her)24 b(l'en)n(tr)n(\023)-33
-b(ee)24 b(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)26 b(du)e(mini-tamp)r
-(on)74 b Ff(M-p)-450 3260 y Fh(rec)n(herc)n(her)24 b(l'en)n(tr)n(\023)
--33 b(ee)24 b(suiv)l(an)n(te)h(du)f(mini-tamp)r(on)-379
-3367 y(ou)g(le)f(d)n(\023)-33 b(efaut)1075 b Ff(M-n)-450
-3473 y Fh(rec)n(herc)n(her)24 b(\022)-35 b(a)24 b(reb)r(ours)g(par)f
-(expr.)35 b(rationnelle)-379 3579 y(dans)24 b(l'historique)931
-b Ff(M-r)-450 3685 y Fh(rec)n(herc)n(her)24 b(v)n(ers)g(l'a)n(v)l(an)n
-(t)g(par)g(expr.)35 b(rationnelle)-379 3792 y(dans)24
-b(l'historique)931 b Ff(M-s)-450 3898 y Fh(ann)n(uler)24
-b(la)f(commande)852 b Ff(C-g)-450 3999 y Fh(F)-6 b(aites)39
+b(au)g(dos.)27 b(v2.3)1902 -421 y Fg(D)n(\023)-55 b(eplacemen)m(ts)1902
+-270 y Fe(Ob)5 b(jet)27 b(sur)g(lequel)g(se)g(d)n(\023)-39
+b(eplacer)102 b(En)28 b(arri)n(\022)-39 b(ere)69 b(En)28
+b(a)n(v)-5 b(an)n(t)1902 -190 y Fh(Caract)n(\022)-33
+b(ere)803 b Ff(C-b)329 b(C-f)1902 -110 y Fh(Mot)973 b
+Ff(M-b)329 b(M-f)1902 -31 y Fh(Ligne)931 b Ff(C-p)329
+b(C-n)1902 49 y Fh(Aller)22 b(en)j(d)n(\023)-33 b(ebut/\014n)25
+b(de)f(la)g(ligne)200 b Ff(C-a)329 b(C-e)1902 129 y Fh(Phrase)891
+b Ff(M-a)329 b(M-e)1902 208 y Fh(P)n(aragraphe)749 b
+Ff(M-{)329 b(M-})1902 288 y Fh(P)n(age)953 b Ff(C-x)36
+b([)258 b(C-x)36 b(])1902 368 y Fh(S-expression)721 b
+Ff(C-M-b)259 b(C-M-f)1902 448 y Fh(F)-6 b(onction)834
+b Ff(C-M-a)259 b(C-M-e)1902 527 y Fh(Aller)22 b(en)j(d)n(\023)-33
+b(ebut/\014n)25 b(du)f(tamp)r(on)180 b Ff(M-<)329 b(M->)1902
+636 y Fh(P)n(asser)23 b(\022)-35 b(a)24 b(l')n(\023)-33
+b(ecran)24 b(suiv)l(an)n(t)715 b Ff(C-v)1902 715 y Fh(P)n(asser)23
+b(\022)-35 b(a)24 b(l')n(\023)-33 b(ecran)24 b(pr)n(\023)-33
+b(ec)n(\023)g(eden)n(t)640 b Ff(M-v)1902 795 y Fh(F)-6
+b(aire)23 b(d)n(\023)-33 b(e\014ler)24 b(l')n(\023)-33
+b(ecran)24 b(v)n(ers)f(la)h(gauc)n(he)391 b Ff(C-x)36
+b(<)1902 875 y Fh(F)-6 b(aire)23 b(d)n(\023)-33 b(e\014ler)24
+b(l')n(\023)-33 b(ecran)24 b(v)n(ers)f(la)h(droite)419
+b Ff(C-x)36 b(>)1902 954 y Fh(Placer)24 b(la)f(ligne)h(couran)n(te)h
+(au)f(cen)n(tre)h(de)f(l')n(\023)-33 b(ecran)82 b Ff(C-u)36
+b(C-l)1902 1129 y Fg(D)n(\023)-55 b(etruire)36 b(et)i(supprimer)1902
+1280 y Fe(Ob)5 b(jet)26 b(\022)-40 b(a)26 b(supprimer)439
+b(En)28 b(arri)n(\022)-39 b(ere)69 b(En)28 b(a)n(v)-5
+b(an)n(t)1902 1360 y Fh(Caract)n(\022)-33 b(ere)25 b(\(suppression\))
+370 b Ff(DEL)329 b(C-d)1902 1439 y Fh(Mot)973 b Ff(M-DEL)259
+b(M-d)1902 1519 y Fh(Ligne)24 b(\(jusqu'au)g(d)n(\023)-33
+b(ebut/\014n\))282 b Ff(M-0)36 b(C-k)188 b(C-k)1902 1599
+y Fh(Phrase)891 b Ff(C-x)36 b(DEL)188 b(M-k)1902 1679
+y Fh(S-expression)721 b Ff(M--)36 b(C-M-k)118 b(C-M-k)1902
+1787 y Fh(D)n(\023)-33 b(etruire)23 b(une)i Fe(r)n(\023)-39
+b(egion)804 b Ff(C-w)1902 1867 y Fh(Copier)23 b(une)i(r)n(\023)-33
+b(egion)24 b(dans)g(le)f Fb(kil)t(l)i(ring)383 b Ff(M-w)1902
+1946 y Fh(D)n(\023)-33 b(etruire)21 b(jusqu'\022)-35
+b(a)22 b(l'o)r(ccurrence)g(suiv)l(an)n(te)h(de)f Fb(c)l(ar)71
+b Ff(M-z)36 b Fb(c)l(ar)1902 2055 y Fh(R)n(\023)-33 b(ecup)n(\023)g
+(erer)24 b(la)g(derni)n(\022)-33 b(ere)23 b(r)n(\023)-33
+b(egion)24 b(d)n(\023)-33 b(etruite)303 b Ff(C-y)1902
+2134 y Fh(R)n(\023)-33 b(ecup)n(\023)g(erer)24 b(la)g(r)n(\023)-33
+b(egion)23 b(d)n(\023)-33 b(etruite)25 b(pr)n(\023)-33
+b(ec)n(\023)g(eden)n(te)224 b Ff(M-y)1902 2310 y Fg(Marquer)1902
+2461 y Fh(Placer)24 b(la)f(marque)h(au)g(p)r(oin)n(t)634
+b Ff(C-@)36 b Fh(ou)g Ff(C-SPC)1908 2524 y Fh(\023)1902
+2541 y(Ec)n(hanger)25 b(le)e(p)r(oin)n(t)i(et)f(la)f(marque)483
+b Ff(C-x)36 b(C-x)1902 2649 y Fh(Placer)24 b(la)f(marque)h(un)g
+Fe(mot)f Fh(plus)g(loin)363 b Ff(M-@)1902 2729 y Fh(Marquer)23
+b(le)h Fe(paragraphe)678 b Ff(M-h)1902 2808 y Fh(Marquer)23
+b(la)h Fe(page)912 b Ff(C-x)36 b(C-p)1902 2888 y Fh(Marquer)23
+b(la)h Fe(s-expression)647 b Ff(C-M-@)1902 2968 y Fh(Marquer)23
+b(la)h Fe(fonction)787 b Ff(C-M-h)1902 3048 y Fh(Marquer)23
+b(tout)i(le)f Fe(tamp)r(on)653 b Ff(C-x)36 b(h)1902 3222
+y Fg(Remplacemen)m(t)g(in)m(teractif)1902 3373 y Fh(Remplacer)24
+b(une)g(c)n(ha)-8 b(^)-27 b(\020ne)25 b(de)f(texte)492
+b Ff(M-\045)1985 3453 y Fh(\022)-35 b(a)24 b(l'aide)f(d'expr.)31
+b(rationnelles)145 b Ff(M-x)36 b(query-replace-regexp)1902
+3561 y Fh(R)n(\023)-33 b(ep)r(onses)33 b(p)r(ossibles)e(p)r(our)g(c)n
+(haque)j(o)r(ccurrence)f(dans)f(le)f(mo)r(de)h(de)1902
+3641 y(remplacemen)n(t)25 b(in)n(teractif)f(:)1902 3749
+y Fe(Remplacer)f Fh(celle-l\022)-35 b(a,)23 b(passer)g(\022)-35
+b(a)24 b(la)f(suiv)l(an)n(te)182 b Ff(SPC)1902 3829 y
+Fh(Remplacer)24 b(celle-l\022)-35 b(a,)23 b(rester)g(l\022)-35
+b(a)584 b Ff(,)1902 3909 y Fe(P)n(asser)23 b Fh(\022)-35
+b(a)24 b(la)g(suiv)l(an)n(te)g(sans)g(remplacer)321 b
+Ff(DEL)1902 3988 y Fh(Remplacer)24 b(toutes)h(les)e(o)r(ccurrences)i
+(suiv)l(an)n(tes)119 b Ff(!)1902 4068 y Fe(Rev)n(enir)23
+b Fh(\022)-35 b(a)24 b(l'o)r(ccurrence)g(pr)n(\023)-33
+b(ec)n(\023)g(eden)n(te)365 b Ff(^)1902 4148 y Fe(Quitter)23
+b Fh(le)g(remplacemen)n(t)i(in)n(teractif)348 b Ff(RET)1908
+4211 y Fe(\023)1902 4227 y(Editer)23 b Fh(a)n(v)l(an)n(t)i(de)f
+(reprendre)g(\()p Ff(C-M-c)i Fh(:)31 b(sortir\))119 b
+Ff(C-r)4098 -421 y Fg(F)-10 b(en)n(^)-55 b(etres)37 b(m)m(ultiples)4098
+-299 y Fh(Lorsqu'il)17 b(y)h(a)g(deux)h(commandes,)h(la)e(seconde)i
+(est)e(celle)g(qui)g(concerne)4098 -219 y(non)24 b(pas)g(les)f(fen)n(^)
+-33 b(etres)25 b(mais)e(les)g(cadres.)4098 -118 y(Supprimer)g(toutes)i
+(les)f(autres)g(fen)n(^)-33 b(etres)105 b Ff(C-x)36 b(1)212
+b(C-x)37 b(5)e(1)4098 -38 y Fh(Supprimer)23 b(cette)j(fen)n(^)-33
+b(etre)487 b Ff(C-x)36 b(0)212 b(C-x)37 b(5)e(0)4098
+42 y Fh(Diviser)23 b(la)g(fen)n(^)-33 b(etre)24 b(horizon)n(talemen)n
+(t)170 b Ff(C-x)36 b(2)212 b(C-x)37 b(5)e(2)4098 143
+y Fh(Diviser)23 b(la)g(fen)n(^)-33 b(etre)24 b(v)n(erticalemen)n(t)476
+b Ff(C-x)36 b(3)4098 244 y Fh(F)-6 b(aire)23 b(d)n(\023)-33
+b(e\014ler)24 b(l'autre)g(fen)n(^)-33 b(etre)618 b Ff(C-M-v)4098
+345 y Fh(S)n(\023)-33 b(electionner)25 b(une)f(autre)h(fen)n(^)-33
+b(etre)291 b Ff(C-x)36 b(o)212 b(C-x)37 b(5)e(o)4098
+425 y Fh(Choisir)23 b(un)g(tamp)r(on)i(\(autre)g(fen)n(^)-33
+b(etre\))160 b Ff(C-x)36 b(4)g(b)141 b(C-x)37 b(5)e(b)4098
+504 y Fh(A\016c)n(her)24 b(un)g(tamp)r(on)g(\(autre)h(fen)n(^)-33
+b(etre\))141 b Ff(C-x)36 b(4)g(C-o)71 b(C-x)37 b(5)e(C-o)4098
+584 y Fh(Lire)23 b(un)h(\014c)n(hier)g(\(autre)h(fen)n(^)-33
+b(etre\))308 b Ff(C-x)36 b(4)g(f)141 b(C-x)37 b(5)e(f)4181
+664 y Fh(en)24 b(lecture)g(seule)657 b Ff(C-x)36 b(4)g(r)141
+b(C-x)37 b(5)e(r)4098 743 y Fh(Lancer)24 b(Dired)f(\(autre)i(fen)n(^)
+-33 b(etre\))339 b Ff(C-x)36 b(4)g(d)141 b(C-x)37 b(5)e(d)4098
+823 y Fh(T)-6 b(rouv)n(er)24 b(un)g(tag)g(\(autre)h(fen)n(^)-33
+b(etre\))278 b Ff(C-x)36 b(4)g(.)141 b(C-x)37 b(5)e(.)4098
+924 y Fh(Agrandir)23 b(la)g(fen)n(^)-33 b(etre)25 b(v)n(erticalemen)n
+(t)416 b Ff(C-x)36 b(^)4098 1004 y Fh(R)n(\023)-33 b(eduire)24
+b(la)f(fen)n(^)-33 b(etre)24 b(horizon)n(talemen)n(t)373
+b Ff(C-x)36 b({)4098 1084 y Fh(Agrandir)23 b(la)g(fen)n(^)-33
+b(etre)25 b(horizon)n(talemen)n(t)336 b Ff(C-x)36 b(})4098
+1214 y Fg(F)-10 b(ormater)4098 1336 y Fh(Inden)n(ter)25
+b(la)f Fe(ligne)f Fh(couran)n(te)i(\(selon)f(le)g(mo)r(de\))127
+b Ff(TAB)4098 1416 y Fh(Inden)n(ter)25 b(la)f Fe(r)n(\023)-39
+b(egion)22 b Fh(couran)n(te)j(\(selon)g(le)e(mo)r(de\))76
+b Ff(C-M-\\)4098 1496 y Fh(Inden)n(ter)21 b(la)d Fe(s-expr.)30
+b Fh(couran)n(te)21 b(\(selon)e(le)g(mo)r(de\))72 b Ff(C-M-q)4098
+1576 y Fh(Inden)n(ter)25 b(la)f(r)n(\023)-33 b(egion)23
+b(sur)h(une)g(colonne)386 b Ff(C-x)36 b(TAB)4098 1655
+y Fh(Ins)n(\023)-33 b(erer)24 b(un)g(retour)f(\022)-35
+b(a)24 b(la)g(ligne)f(apr)n(\022)-33 b(es)24 b(le)f(p)r(oin)n(t)168
+b Ff(C-o)4098 1735 y Fh(D)n(\023)-33 b(eplacer)24 b(le)g(reste)g(de)g
+(la)f(ligne)h(v)n(ers)f(le)h(bas)240 b Ff(C-M-o)4098
+1815 y Fh(Supprimer)23 b(les)g(lignes)h(vierges)g(autour)g(du)g(p)r
+(oin)n(t)73 b Ff(C-x)36 b(C-o)4098 1894 y Fh(Joindre)20
+b(\022)-35 b(a)20 b(la)f(ligne)h(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)
+22 b(\(suiv.)30 b(a)n(v)n(ec)21 b Fb(ar)l(g)6 b Fh(\))71
+b Ff(M-^)4098 1974 y Fh(Supprimer)23 b(tous)h(les)g(espaces)h(autour)f
+(du)g(p)r(oin)n(t)102 b Ff(M-\\)4098 2054 y Fh(Mettre)24
+b(exactemen)n(t)j(une)d(espace)h(au)f(p)r(oin)n(t)223
+b Ff(M-SPC)4098 2155 y Fh(F)-6 b(ormater)24 b(le)f(paragraphe)715
+b Ff(M-q)4098 2235 y Fh(Placer)24 b(la)f(marge)h(droite)g(\022)-35
+b(a)24 b Fb(ar)l(g)30 b Fh(colonnes)287 b Ff(C-u)36 b
+Fb(ar)l(g)42 b Ff(C-x)36 b(f)4098 2314 y Fh(D)n(\023)-33
+b(e\014nir)23 b(le)h(pr)n(\023)-33 b(e\014xe)24 b(des)g(lignes)607
+b Ff(C-x)36 b(.)4098 2415 y Fh(D)n(\023)-33 b(e\014nir)23
+b(la)h(fon)n(te)975 b Ff(M-o)4098 2538 y Fg(Mo)s(di\014er)37
+b(la)h(casse)4098 2660 y Fh(Mettre)24 b(le)g(mot)g(en)g(capitales)627
+b Ff(M-u)4098 2740 y Fh(Mettre)24 b(le)g(mot)g(en)g(min)n(uscules)561
+b Ff(M-l)4098 2819 y Fh(Mettre)24 b(une)h(ma)t(juscule)e(au)h(mot)523
+b Ff(M-c)4098 2920 y Fh(Mettre)24 b(la)g(r)n(\023)-33
+b(egion)23 b(en)i(capitales)556 b Ff(C-x)36 b(C-u)4098
+3000 y Fh(Mettre)24 b(la)g(r)n(\023)-33 b(egion)23 b(en)i(min)n
+(uscules)490 b Ff(C-x)36 b(C-l)4098 3132 y Fg(Le)i(mini-tamp)s(on)4098
+3254 y Fh(Dans)24 b(le)f(mini-tamp)r(on)h(:)4098 3355
+y(Compl)n(\023)-33 b(eter)24 b(autan)n(t)h(que)g(p)r(ossible)496
+b Ff(TAB)4098 3435 y Fh(Compl)n(\023)-33 b(eter)24 b(un)g(mot)872
+b Ff(SPC)4098 3514 y Fh(Compl)n(\023)-33 b(eter)24 b(et)g(ex)n(\023)-33
+b(ecuter)758 b Ff(RET)4098 3594 y Fh(Mon)n(trer)23 b(les)h(compl)n
+(\022)-33 b(etemen)n(ts)25 b(p)r(ossibles)313 b Ff(?)4098
+3674 y Fh(Utiliser)22 b(l'en)n(tr)n(\023)-33 b(ee)24
+b(pr)n(\023)-33 b(ec)n(\023)g(eden)n(te)26 b(du)e(mini-tamp)r(on)91
+b Ff(M-p)4098 3753 y Fh(Utiliser)22 b(l'en)n(tr)n(\023)-33
+b(ee)24 b(suiv)l(an)n(te)h(du)f(mini-tamp)r(on)167 b
+Ff(M-n)4098 3833 y Fh(Rec)n(herc)n(her)25 b(en)f(arri)n(\022)-33
+b(ere)22 b(dans)j(l'historique)251 b Ff(M-r)4098 3913
+y Fh(Rec)n(herc)n(her)25 b(en)f(a)n(v)l(an)n(t)h(dans)f(l'historique)
+285 b Ff(M-s)4098 3993 y Fh(Quitter)24 b(en)g(ann)n(ulan)n(t)h(la)f
+(commande)394 b Ff(C-g)4098 4094 y Fh(F)-6 b(aites)39
b Ff(C-x)d(ESC)g(ESC)j Fh(p)r(our)d(\023)-33 b(editer)39
b(et)g(r)n(\023)-33 b(ep)n(\023)g(eter)39 b(la)f(derni)n(\022)-33
-b(ere)38 b(com-)-450 4064 y(mande)33 b(a)n(y)n(an)n(t)g(utilis)n(\023)
--33 b(e)32 b(le)g(minitamp)r(on.)56 b(F)-6 b(aites)32
-b Ff(F10)h Fh(p)r(our)f(activ)n(er)-450 4130 y(la)23
-b(barre)h(de)g(men)n(u)g(utilisan)n(t)g(le)f(minitamp)r(on.)1656
--364 y Fi(Carte)46 b(de)g(r)m(\023)-66 b(ef)m(\023)g(erence)46
-b(de)g(GNU)f(Emacs)1746 -175 y Fg(T)-10 b(amp)s(ons)1746
--21 y Fh(s)n(\023)-33 b(electionner)25 b(un)f(autre)g(tamp)r(on)604
-b Ff(C-x)36 b(b)1744 85 y Fh(\023)-33 b(en)n(um)n(\023)g(erer)24
-b(tous)g(les)f(tamp)r(ons)684 b Ff(C-x)36 b(C-b)1746
-192 y Fh(supprimer)23 b(un)h(tamp)r(on)839 b Ff(C-x)36
-b(k)1746 382 y Fg(T)-10 b(ransp)s(oser)1746 535 y Fh(transp)r(oser)24
-b(des)g Fe(caract)n(\022)-39 b(eres)687 b Ff(C-t)1746
-642 y Fh(transp)r(oser)24 b(des)g Fe(mots)872 b Ff(M-t)1746
-748 y Fh(transp)r(oser)24 b(des)g Fe(lignes)844 b Ff(C-x)36
-b(C-t)1746 854 y Fh(transp)r(oser)24 b(des)g Fe(s-expressions)585
-b Ff(C-M-t)1746 1045 y Fg(V)n(\023)-55 b(eri\014er)37
-b(l'orthographe)1746 1199 y Fh(v)n(\023)-33 b(eri\014er)23
-b(l'orthographe)i(du)f(mot)g(couran)n(t)359 b Ff(M-$)1746
-1305 y Fh(v)n(\023)-33 b(eri\014er)23 b(l'orthographe)i(de)f(tous)g
-(les)f(mots)1817 1411 y(d'une)h(r)n(\023)-33 b(egion)816
-b Ff(M-x)36 b(ispell-region)1746 1517 y Fh(v)n(\023)-33
-b(eri\014er)23 b(l'orthographe)i(de)f(tout)h(le)e(tamp)r(on)37
-b Ff(M-x)f(ispell-buffer)1746 1707 y Fg(T)-10 b(ags)1746
-1861 y Fh(trouv)n(er)24 b(un)g(tag)h(\(une)f(d)n(\023)-33
-b(e\014nition\))564 b Ff(M-.)1746 1967 y Fh(trouv)n(er)24
-b(l'o)r(ccurrence)g(suiv)l(an)n(te)h(du)f(tag)400 b Ff(C-u)36
-b(M-.)1746 2074 y Fh(sp)n(\023)-33 b(eci\014er)24 b(un)g(nouv)n(eau)h
-(\014c)n(hier)f(de)g(tags)187 b Ff(M-x)36 b(visit-tags-table)1746
-2208 y Fh(rec)n(herc)n(her)24 b(par)g(expr.)35 b(rationnelles)24
-b(dans)1817 2315 y(tous)g(les)f(\014c)n(hiers)h(du)g(tableau)h(de)f
-(tags)131 b Ff(M-x)36 b(tags-search)1746 2421 y Fh(lancer)24
-b(un)g(remplacemen)n(t)h(in)n(teractif)f(sur)1817 2527
-y(tous)g(les)f(\014c)n(hiers)652 b Ff(M-x)37 b(tags-query-replace)1746
-2633 y Fh(con)n(tin)n(uer)25 b(la)e(derni)n(\022)-33
-b(ere)24 b(rec)n(herc)n(he)h(de)f(tags)g(ou)g(le)1817
-2740 y(remplacemen)n(t)g(in)n(teractif)710 b Ff(M-,)1746
-2930 y Fg(Shells)1746 3065 y Fh(ex)n(\023)-33 b(ecuter)25
-b(une)g(commande)g(shell)606 b Ff(M-!)1746 3171 y Fh(lancer)24
-b(une)g(commande)h(shell)e(sur)g(la)h(r)n(\023)-33 b(egion)271
-b Ff(M-|)1746 3277 y Fh(\014ltrer)23 b(la)h(r)n(\023)-33
-b(egion)23 b(a)n(v)n(ec)i(une)f(commande)h(shell)246
-b Ff(C-u)36 b(M-|)1746 3384 y Fh(lancer)24 b(un)g(shell)f(dans)h(la)f
-(fen)n(^)-33 b(etre)25 b Ff(*shell*)318 b(M-x)36 b(shell)3942
--364 y Fg(Rectangles)3942 -210 y Fh(copier)24 b(le)f(rectangle)i(dans)f
-(le)g(registre)459 b Ff(C-x)36 b(r)f(r)3942 -104 y Fh(d)n(\023)-33
-b(etruire)24 b(le)f(rectangle)893 b Ff(C-x)36 b(r)f(k)3942
-2 y Fh(r)n(\023)-33 b(ecup)n(\023)g(erer)24 b(le)f(rectangle)850
-b Ff(C-x)36 b(r)f(y)3942 109 y Fh(ouvrir)23 b(le)g(rectangle,)i(en)f(d)
-n(\023)-33 b(ecalan)n(t)25 b(le)f(texte)h(\022)-35 b(a)4013
-215 y(droite)1260 b Ff(C-x)36 b(r)f(o)3942 321 y Fh(vider)23
-b(le)h(rectangle)981 b Ff(C-x)36 b(r)f(c)3942 427 y Fh(pr)n(\023)-33
-b(e\014xer)24 b(c)n(haque)h(ligne)f(a)n(v)n(ec)h(une)f(c)n(ha)-8
-b(^)-27 b(\020ne)369 b Ff(C-x)36 b(r)f(t)3942 618 y Fg(Abr)n(\023)-55
-b(eviations)3942 752 y Fh(a)t(jouter)24 b(une)g(abr)n(\023)-33
-b(eviation)25 b(globale)547 b Ff(C-x)36 b(a)f(g)3942
-859 y Fh(a)t(jouter)24 b(une)g(abr)n(\023)-33 b(eviation)25
-b(lo)r(cale)f(au)g(mo)r(de)300 b Ff(C-x)36 b(a)f(l)3942
-965 y Fh(a)t(jouter)24 b(une)g(expansion)h(globale)f(p)r(our)g(cette)
-4013 1071 y(abr)n(\023)-33 b(eviation)1094 b Ff(C-x)36
-b(a)f(i)h(g)3942 1178 y Fh(a)t(jouter)24 b(une)g(expansion)h(lo)r(cale)
-f(au)g(mo)r(de)g(p)r(our)4013 1284 y(cette)h(abr)n(\023)-33
-b(eviation)922 b Ff(C-x)36 b(a)f(i)h(l)3942 1390 y Fh(faire)23
-b(une)h(expansion)h(explicite)f(de)g(cette)4013 1496
-y(abr)n(\023)-33 b(eviation)1094 b Ff(C-x)36 b(a)f(e)3942
-1631 y Fh(faire)23 b(une)h(expansion)h(dynamique)g(du)f(mot)4013
-1737 y(pr)n(\023)-33 b(ec)n(\023)g(eden)n(t)1146 b Ff(M-/)3942
-1928 y Fg(Expressions)39 b(rationnelles)3942 2082 y Fh(un)24
-b(unique)g(caract)n(\022)-33 b(ere)25 b(quelconque,)g(sauf)f(une)g
-(\014n)4013 2188 y(de)g(ligne)1201 b Ff(.)70 b Fh(\(p)r(oin)n(t\))3942
-2294 y(z)n(\023)-33 b(ero)24 b(r)n(\023)-33 b(ep)n(\023)g(etition)25
-b(ou)f(plus)816 b Ff(*)3942 2401 y Fh(une)24 b(r)n(\023)-33
-b(ep)n(\023)g(etition)25 b(ou)f(plus)832 b Ff(+)3942
-2507 y Fh(z)n(\023)-33 b(ero)24 b(ou)g(une)g(r)n(\023)-33
-b(ep)n(\023)g(etition)834 b Ff(?)3942 2613 y Fh(caract)n(\022)-33
-b(ere)25 b(sp)n(\023)-33 b(ecial)24 b(p)r(our)f(quoter)i(l'expression)e
-(ra-)4013 2720 y(tionnelle)h Fb(c)1121 b Ff(\\)p Fb(c)3942
-2826 y Fh(alternativ)n(e)25 b(\(\\ou"\))960 b Ff(\\|)3942
-2932 y Fh(regroup)r(emen)n(t)1089 b Ff(\\\()35 b Fa(:)12
-b(:)f(:)35 b Ff(\\\))3942 3038 y Fh(le)23 b(m)n(^)-33
-b(eme)24 b(texte)i(que)e(dans)g(le)g Fb(n)5 b Fh(i)n(\022)-33
-b(eme)24 b(group)r(e)264 b Ff(\\)p Fb(n)3942 3145 y Fh(limite)23
-b(de)h(mot)1096 b Ff(\\b)3942 3251 y Fh(non)24 b(limite)f(de)h(mot)959
-b Ff(\\B)3942 3361 y Fe(en)n(tit)n(\023)-39 b(e)499 b(d)n(\023)-39
-b(ebut)258 b(\014n)3942 3417 y Fh(ligne)558 b Ff(^)427
-b($)3942 3483 y Fh(mot)582 b Ff(\\<)392 b(\\>)3942 3539
-y Fh(tamp)r(on)467 b Ff(\\`)392 b(\\')3942 3604 y Fe(classe)27
-b(de)g(caract)n(\022)-39 b(ere)41 b(corresp)r(ond)70
-b(corresp)r(ond)27 b(\022)-40 b(a)26 b(d'autres)3942
-3670 y Fh(ensem)n(ble)e(explicite)147 b Ff([)35 b Fa(:)12
-b(:)f(:)35 b Ff(])239 b([^)36 b Fa(:)12 b(:)f(:)35 b
-Ff(])3942 3736 y Fh(caract)n(\022)-33 b(ere)25 b(de)f(mot)186
-b Ff(\\w)392 b(\\W)3942 3791 y Fh(caract)n(\022)-33 b(ere)25
-b(a)n(v)n(ec)g(la)3984 3847 y(syn)n(taxe)g Fb(c)371 b
-Ff(\\s)p Fb(c)359 b Ff(\\S)p Fb(c)p eop end
-%%Page: 3 3
-TeXDict begin @landscape 3 2 bop -450 -364 a Fg(Jeux)38
-b(de)f(caract)n(\022)-55 b(eres)37 b(in)m(ternationaux)-450
--230 y Fh(indiquer)23 b(la)h(langue)g(principale)631
-b Ff(C-x)36 b(RET)g(l)-450 -123 y Fh(mon)n(trer)24 b(toutes)h(les)e(m)n
-(\023)-33 b(etho)r(des)25 b(de)f(saisie)29 b Ff(M-x)36
-b(list-input-methods)-450 -17 y Fh(activ)n(er)24 b(ou)g(d)n(\023)-33
-b(esactiv)n(er)25 b(la)f(m)n(\023)-33 b(etho)r(de)25
-b(de)f(saisie)229 b Ff(C-\\)-450 89 y Fh(c)n(hoisir)23
-b(le)g(syst)n(\022)-33 b(eme)25 b(de)f(co)r(dage)h(p)r(our)f(la)f(com-)
--379 196 y(mande)h(suiv)l(an)n(te)963 b Ff(C-x)36 b(RET)g(c)-450
-302 y Fh(mon)n(trer)24 b(tous)g(les)f(syst)n(\022)-33
-b(emes)25 b(de)f(co)r(dage)64 b Ff(M-x)36 b(list-coding-systems)-450
-408 y Fh(c)n(hoisir)23 b(le)g(syst)n(\022)-33 b(eme)25
-b(de)f(co)r(dage)h(pr)n(\023)-33 b(ef)n(\023)g(er)n(\023)g(e)85
-b Ff(M-x)36 b(prefer-coding-system)-450 599 y Fg(Info)-450
-733 y Fh(en)n(trer)24 b(dans)g(le)f(visualisateur)h(de)g(la)g(do)r
-(cumen)n(ta-)-379 839 y(tion)g(Info)1174 b Ff(C-h)36
-b(i)-450 946 y Fh(c)n(herc)n(her)24 b(une)h(fonction)f(ou)g(une)h(v)l
-(ariable)e(pr)n(\023)-33 b(ecise)-379 1052 y(dans)24
-b(Info)1154 b Ff(C-h)36 b(S)-450 1162 y Fh(Se)24 b(d)n(\023)-33
-b(eplacer)25 b(dans)f(un)f(n\033ud)i(:)-379 1281 y(une)f(page)h(plus)e
-(bas)891 b Ff(SPC)-379 1387 y Fh(une)24 b(page)h(plus)e(haut)853
-b Ff(DEL)-379 1494 y Fh(d)n(\023)-33 b(ebut)25 b(du)e(n\033ud)967
-b Ff(.)70 b Fh(\(p)r(oin)n(t\))-450 1604 y(P)n(asser)23
-b(de)h(n\033ud)g(en)h(n\033ud)f(:)-379 1710 y(n\033ud)g
-Fe(suiv)-5 b(an)n(t)991 b Ff(n)-379 1816 y Fh(n\033ud)24
-b Fe(pr)n(\023)-39 b(ec)n(\023)g(eden)n(t)898 b Ff(p)-379
-1922 y Fh(aller)22 b Fe(plus)i(haut)953 b Ff(u)-379 2029
-y Fh(c)n(hoisir)23 b(un)g(sujet)h(de)g(men)n(u)h(par)e(son)h(nom)277
-b Ff(m)-379 2135 y Fh(c)n(hoisir)23 b(le)g Fb(n)5 b Fh(i)n(\022)-33
-b(eme)24 b(sujet)g(de)g(men)n(u)g(par)g(son)-379 2241
-y(n)n(um)n(\023)-33 b(ero)23 b(\(1{9\))1029 b Fb(n)-379
-2347 y Fh(suivre)23 b(une)h(r)n(\023)-33 b(ef)n(\023)g(erence)24
-b(crois)n(\023)-33 b(ee)24 b(\(on)h(revien)n(t)f(a)n(v)n(ec)-379
-2454 y Ff(l)p Fh(\))1378 b Ff(f)-379 2560 y Fh(rev)n(enir)23
-b(au)h(dernier)f(n\033ud)h(visit)n(\023)-33 b(e)509 b
-Ff(l)-379 2666 y Fh(rev)n(enir)23 b(au)h(n\033ud)g(du)g(r)n(\023)-33
-b(ep)r(ertoire)509 b Ff(d)-379 2773 y Fh(aller)22 b(au)i(n\033ud)g(de)h
-(plus)e(haut)i(niv)n(eau)f(du)-379 2879 y(\014c)n(hier)f(Info)1110
-b Ff(t)-379 2985 y Fh(aller)22 b(sur)i(n'imp)r(orte)f(quel)h(n\033ud)g
-(par)f(son)h(nom)111 b Ff(g)-450 3095 y Fh(Autres)24
-b(:)-379 3201 y(lancer)f(le)h Fe(didacticiel)e Fh(Info)652
-b Ff(h)-379 3307 y Fh(c)n(herc)n(her)24 b(un)g(sujet)g(dans)g(l'index)
-518 b Ff(i)-379 3413 y Fh(rec)n(herc)n(her)24 b(les)f(n\033uds)h(a)n(v)
-n(ec)h(une)f(expression)-379 3519 y(rationnelle)1115
-b Ff(s)-379 3626 y Fe(quitter)22 b Fh(Info)1051 b Ff(q)1746
--364 y Fg(Registres)1746 -244 y Fh(sauv)n(er)24 b(la)f(r)n(\023)-33
-b(egion)24 b(dans)g(un)g(registre)506 b Ff(C-x)36 b(r)f(s)1746
--138 y Fh(ins)n(\023)-33 b(erer)23 b(le)g(con)n(ten)n(u)j(du)e
-(registre)f(dans)h(le)g(tamp)r(on)117 b Ff(C-x)36 b(r)f(i)1746
--11 y Fh(sauv)n(er)24 b(la)f(v)l(aleur)h(du)g(p)r(oin)n(t)g(dans)g(un)g
-(registre)222 b Ff(C-x)36 b(r)f(SPC)1746 95 y Fh(sauter)24
-b(au)g(p)r(oin)n(t)g(sauv)n(\023)-33 b(e)25 b(dans)f(le)f(registre)355
-b Ff(C-x)36 b(r)f(j)1746 244 y Fg(Macros)j(cla)m(vier)1746
-344 y Fe(lancer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
-b(d'une)f(macro)g(cla)n(vier)277 b Ff(C-x)36 b(\()1746
-451 y Fe(terminer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
-b(d'une)f(macro)f(cla)n(vier)183 b Ff(C-x)36 b(\))1746
-557 y Fe(ex)n(\023)-39 b(ecuter)24 b Fh(la)f(derni)n(\022)-33
-b(ere)24 b(macro)g(cla)n(vier)f(d)n(\023)-33 b(e\014nie)203
-b Ff(C-x)36 b(e)1746 663 y Fh(a)t(jouter)24 b(\022)-35
-b(a)24 b(la)f(derni)n(\022)-33 b(ere)24 b(macro)g(cla)n(vier)446
-b Ff(C-u)36 b(C-x)g(\()1746 770 y Fh(donner)24 b(un)g(nom)g(\022)-35
-b(a)24 b(la)f(derni)n(\022)-33 b(ere)24 b(macro)1817
-876 y(cla)n(vier)996 b Ff(M-x)36 b(name-last-kbd-macro)1746
-982 y Fh(ins)n(\023)-33 b(erer)23 b(une)h(d)n(\023)-33
-b(e\014nition)25 b(Lisp)e(dans)h(le)1817 1088 y(tamp)r(on)960
-b Ff(M-x)36 b(insert-kbd-macro)1746 1237 y Fg(Commandes)i(de)f(gestion)
-h(d'Emacs)g(Lisp)1744 1357 y Fh(\023)-33 b(ev)l(aluer)24
-b(la)g Fe(s-expression)f Fh(situ)n(\023)-33 b(ee)25 b(a)n(v)l(an)n(t)g
-(le)e(p)r(oin)n(t)115 b Ff(C-x)36 b(C-e)1744 1463 y Fh(\023)-33
-b(ev)l(aluer)24 b(la)g Fe(defun)g Fh(couran)n(te)707
-b Ff(C-M-x)1744 1570 y Fh(\023)-33 b(ev)l(aluer)24 b(la)g
-Fe(r)n(\023)-39 b(egion)726 b Ff(M-x)36 b(eval-region)1746
-1676 y Fh(lire)23 b(et)f(\023)-33 b(ev)l(aluer)24 b(le)g(mini-tamp)r
-(on)593 b Ff(M-:)1746 1782 y Fh(c)n(harger)24 b(\022)-35
-b(a)24 b(partir)f(du)h(r)n(\023)-33 b(ep)r(ertoire)23
-b(syst)n(\022)-33 b(eme)1817 1888 y(standard)926 b Ff(M-x)36
-b(load-library)1746 2037 y Fg(P)m(ersonnalisation)g(simple)1746
-2157 y Fh(p)r(ersonnaliser)23 b(les)h(v)l(ariables)f(et)h(les)g(fon)n
-(tes)81 b Ff(M-x)36 b(customize)1746 2263 y Fh(Cr)n(\023)-33
-b(eation)23 b(de)g(liaisons)f(de)h(touc)n(hes)h(globales)f(en)g(Emacs)g
-(Lisp)f(\(exem-)1746 2336 y(ples\):)1746 2425 y Ff(\(global-set-key)40
-b("\\C-cg")d('goto-line\))1746 2493 y(\(global-set-key)j("\\M-#")d
-('query-replace-regexp\))1755 2627 y Fg(\023)1746 2651
-y(Ecriture)g(de)h(commandes)1746 2731 y Ff(\(defun)f
-Fb(nom-c)l(ommande)43 b Ff(\()p Fb(ar)l(gs)5 b Ff(\))1817
-2796 y(")p Fb(do)l(cumentation)g Ff(")38 b(\(interactive)g(")p
-Fb(template)5 b Ff("\))1817 2862 y Fb(b)l(o)l(dy)h Ff(\))1746
-2948 y Fh(Exemple)24 b(:)1746 3034 y Ff(\(defun)37 b
-(cette-ligne-en-haut-de-)q(la-f)q(ene)q(tre)42 b(\(line\))1746
-3090 y("Repositionne)d(la)d(ligne)h(du)e(point)i(en)f(haut)g(de)g(la)g
-(fenetre.)1746 3145 y(Avec)g(ARG,)h(place)g(le)e(point)i(sur)f(la)g
-(ligne)h(ARG.")1817 3213 y(\(interactive)h("P"\))1817
-3269 y(\(recenter)f(\(if)g(\(null)f(line\))2311 3324
-y(0)2240 3380 y(\(prefix-numeric-value)41 b(line\)\)\)\))1746
-3468 y Fh(La)21 b(sp)n(\023)-33 b(eci\014cation)23 b
-Ff(interactive)h Fh(indique)d(commen)n(t)h(lire)e(in)n(teractiv)n(e-)
-1746 3534 y(men)n(t)28 b(les)f(param)n(\022)-33 b(etres.)42
-b(F)-6 b(aites)28 b Ff(C-h)36 b(f)f(interactive)30 b
-Fh(p)r(our)e(plus)e(de)1746 3599 y(pr)n(\023)-33 b(ecisions.)2039
-3682 y Fd(Cop)n(yrigh)n(t)2342 3680 y(c)2325 3682 y Fc(\015)21
+b(ere)38 b(com-)4098 4173 y(mande)22 b(a)n(y)n(an)n(t)g(utilis)n(\023)
+-33 b(e)20 b(le)h(mini-tamp)r(on.)30 b(F)-6 b(aites)22
+b Ff(F10)f Fh(p)r(our)g(utiliser)f(la)4098 4253 y(barre)j(de)h(men)n(u)
+h(sur)e(un)h(terminal)f(en)h(utilisan)n(t)g(le)f(mini-tamp)r(on.)p
+eop end
+%%Page: 2 2
+TeXDict begin @landscape 2 1 bop -384 -421 a Fi(Carte)46
+b(de)g(r)m(\023)-66 b(ef)m(\023)g(erence)46 b(de)g(GNU)f(Emacs)-294
+-227 y Fg(T)-10 b(amp)s(ons)-294 -76 y Fh(Choisir)23
+b(un)g(autre)i(tamp)r(on)674 b Ff(C-x)36 b(b)-294 4 y
+Fh(Lister)23 b(tous)i(les)e(tamp)r(ons)719 b Ff(C-x)36
+b(C-b)-294 84 y Fh(Supprimer)23 b(un)h(tamp)r(on)757
+b Ff(C-x)36 b(k)-294 257 y Fg(T)-10 b(ransp)s(oser)-294
+409 y Fh(T)k(ransp)r(oser)24 b(des)g Fe(caract)n(\022)-39
+b(eres)598 b Ff(C-t)-294 488 y Fh(T)-6 b(ransp)r(oser)24
+b(des)g Fe(mots)783 b Ff(M-t)-294 568 y Fh(T)-6 b(ransp)r(oser)24
+b(des)g Fe(lignes)755 b Ff(C-x)36 b(C-t)-294 648 y Fh(T)-6
+b(ransp)r(oser)24 b(des)g Fe(s-expressions)496 b Ff(C-M-t)-294
+822 y Fg(V)n(\023)-55 b(eri\014er)37 b(l'orthographe)-294
+973 y Fh(V)n(\023)-33 b(eri\014er)23 b(l'orthographe)h(du)g(mot)g
+(couran)n(t)273 b Ff(M-$)-294 1053 y Fh(V)n(\023)-33
+b(eri\014er)23 b(l'orthographe)h(d'une)g(r)n(\023)-33
+b(egion)231 b Ff(M-x)36 b(ispell-region)-294 1133 y Fh(V)n(\023)-33
+b(eri\014er)23 b(l'orthographe)h(de)g(tout)h(le)f(tamp)r(on)53
+b Ff(M-x)36 b(ispell-buffer)-294 1308 y Fg(T)-10 b(ags)-294
+1460 y Fh(T)k(rouv)n(er)24 b(un)g(tag)g(\(une)h(d)n(\023)-33
+b(e\014nition\))475 b Ff(M-.)-294 1539 y Fh(P)n(asser)23
+b(\022)-35 b(a)24 b(l'o)r(ccurrence)g(suiv)l(an)n(te)h(du)f(tag)298
+b Ff(C-u)36 b(M-.)-294 1619 y Fh(Sp)n(\023)-33 b(eci\014er)24
+b(un)g(autre)h(\014c)n(hier)e(de)h(tags)217 b Ff(M-x)36
+b(visit-tags-table)-294 1727 y Fh(Rec)n(herc)n(her)25
+b(dans)f(tous)g(les)f(\014c)n(hiers)h(des)g(tags)32 b
+Ff(M-x)k(tags-search)-294 1836 y Fh(Remplacer)24 b(dans)g(tous)g(les)g
+(\014c)n(hiers)159 b Ff(M-x)36 b(tags-query-replace)-294
+1915 y Fh(Con)n(tin)n(uer)24 b(la)g(rec)n(herc)n(he)h(ou)f(le)f
+(remplacemen)n(t)122 b Ff(M-,)-294 2090 y Fg(Shell)-294
+2241 y Fh(Ex)n(\023)-33 b(ecuter)25 b(une)f(commande)h(shell)519
+b Ff(M-!)-294 2321 y Fh(Lancer)24 b(une)h(commande)f(shell)g(sur)f(la)g
+(r)n(\023)-33 b(egion)176 b Ff(M-|)-294 2400 y Fh(Filtrer)23
+b(la)g(r)n(\023)-33 b(egion)24 b(a)n(v)n(ec)h(une)f(commande)h(shell)
+148 b Ff(C-u)36 b(M-|)-294 2480 y Fh(Lancer)24 b(un)g(shell)f(dans)h
+(la)g(fen)n(^)-33 b(etre)24 b Ff(*shell*)223 b(M-x)36
+b(shell)-294 2646 y Fg(Rectangles)-294 2797 y Fh(Copier)23
+b(le)h(rectangle)h(dans)f(un)g(registre)341 b Ff(C-x)36
+b(r)g(r)-294 2876 y Fh(D)n(\023)-33 b(etruire)23 b(le)h(rectangle)807
+b Ff(C-x)36 b(r)g(k)-294 2956 y Fh(R)n(\023)-33 b(ecup)n(\023)g(erer)24
+b(le)g(rectangle)754 b Ff(C-x)36 b(r)g(y)-294 3036 y
+Fh(D)n(\023)-33 b(ecaler)24 b(le)f(rectangle)i(\022)-35
+b(a)24 b(droite)571 b Ff(C-x)36 b(r)g(o)-294 3116 y Fh(Vider)23
+b(le)h(rectangle)894 b Ff(C-x)36 b(r)g(c)-294 3195 y
+Fh(Pr)n(\023)-33 b(e\014xer)24 b(c)n(haque)h(ligne)f(du)f(rectangle)392
+b Ff(C-x)36 b(r)g(t)-294 3370 y Fg(Abr)n(\023)-55 b(eviations)-294
+3521 y Fh(Ajouter)24 b(une)g(abr)n(\023)-33 b(eviation)25
+b(globale)462 b Ff(C-x)36 b(a)g(g)-294 3601 y Fh(Ajouter)24
+b(une)g(abr)n(\023)-33 b(eviation)25 b(lo)r(cale)f(au)g(mo)r(de)215
+b Ff(C-x)36 b(a)g(l)-294 3680 y Fh(Ajouter)24 b(une)g(expansion)h
+(globale)505 b Ff(C-x)36 b(a)g(i)f(g)-294 3760 y Fh(Ajouter)24
+b(une)g(expansion)h(lo)r(cale)f(au)g(mo)r(de)258 b Ff(C-x)36
+b(a)g(i)f(l)-294 3840 y Fh(F)-6 b(aire)17 b(une)i(expansion)g
+(explicite)f(de)g(l'abr)n(\023)-33 b(eviation)71 b Ff(C-x)36
+b(a)g(e)-294 3948 y Fh(F)-6 b(aire)23 b(une)i(expansion)f(du)g(mot)g
+(pr)n(\023)-33 b(ec)n(\023)g(eden)n(t)261 b Ff(M-/)1902
+-421 y Fg(Expressions)39 b(rationnelles)1902 -270 y Fh(Un)24
+b(caract)n(\022)-33 b(ere)25 b(quelconque,)g(sauf)e(\014n)h(de)g(ligne)
+150 b Ff(.)71 b Fh(\(p)r(oin)n(t\))1902 -190 y(Z)n(\023)-33
+b(ero)24 b(r)n(\023)-33 b(ep)n(\023)g(etition)24 b(ou)g(plus)734
+b Ff(*)1902 -110 y Fh(Une)24 b(r)n(\023)-33 b(ep)n(\023)g(etition)24
+b(ou)h(plus)747 b Ff(+)1902 -31 y Fh(Z)n(\023)-33 b(ero)24
+b(ou)g(une)g(r)n(\023)-33 b(ep)n(\023)g(etition)751 b
+Ff(?)1908 32 y Fh(\023)1902 49 y(Ec)n(happ)r(er)25 b(le)e(caract)n
+(\022)-33 b(ere)25 b(sp)n(\023)-33 b(ecial)24 b Fb(c)488
+b Ff(\\)p Fb(c)1902 129 y Fh(Alternativ)n(e)24 b(\(\\ou")i(non)e
+(exclusif)5 b(\))476 b Ff(\\|)1902 208 y Fh(Regroup)r(emen)n(t)994
+b Ff(\\\()36 b Fa(:)11 b(:)h(:)34 b Ff(\\\))1902 288
+y Fh(Reprendre)24 b(le)g(texte)h(du)f Fb(n)5 b Fh(-i)n(\022)-33
+b(eme)24 b(group)r(emen)n(t)146 b Ff(\\)p Fb(n)1902 368
+y Fh(Limite)23 b(de)i(mot)1000 b Ff(\\b)1902 448 y Fh(Non)24
+b(limite)f(de)h(mot)874 b Ff(\\B)1902 556 y Fe(Ob)5 b(jet)707
+b(D)n(\023)-39 b(ebut)264 b(Fin)1902 636 y Fh(Ligne)743
+b Ff(^)450 b($)1902 715 y Fh(Mot)785 b Ff(\\<)415 b(\\>)1902
+795 y Fh(T)-6 b(amp)r(on)658 b Ff(\\`)415 b(\\')1902
+875 y Fe(Classe)26 b(de)i(caract)n(\022)-39 b(ere)227
+b(Corresp)r(ond)70 b(Compl)n(\023)-39 b(emen)n(t)1902
+954 y Fh(Ensem)n(ble)24 b(explicite)339 b Ff([)36 b Fa(:)11
+b(:)h(:)34 b Ff(])262 b([^)36 b Fa(:)12 b(:)f(:)35 b
+Ff(])1902 1034 y Fh(Caract)n(\022)-33 b(ere)25 b(de)f(mot)375
+b Ff(\\w)415 b(\\W)1902 1114 y Fh(Caract)n(\022)-33 b(ere)25
+b(a)n(v)n(ec)f(la)g(syn)n(taxe)h Fb(c)67 b Ff(\\s)p Fb(c)382
+b Ff(\\S)p Fb(c)1902 1288 y Fg(Jeux)38 b(de)f(caract)n(\022)-55
+b(eres)37 b(in)m(ternationaux)1902 1439 y Fh(Pr)n(\023)-33
+b(eciser)23 b(la)g(langue)i(principale)568 b Ff(C-x)36
+b(RET)g(l)1902 1519 y Fh(Lister)23 b(les)h(m)n(\023)-33
+b(etho)r(des)25 b(de)f(saisie)268 b Ff(M-x)36 b(list-input-methods)1902
+1599 y Fh(Activ)n(er/d)n(\023)-33 b(esactiv)n(er)25 b(la)f(m)n(\023)-33
+b(etho)r(de)25 b(de)f(saisie)227 b Ff(C-\\)1902 1679
+y Fh(Choisir)17 b(le)i(co)r(dage)h(p)r(our)e(la)g(commande)i(suiv)l(an)
+n(te)72 b Ff(C-x)36 b(RET)g(c)1902 1758 y Fh(Lister)23
+b(les)h(co)r(dages)568 b Ff(M-x)37 b(list-coding-systems)1902
+1838 y Fh(Choisir)23 b(le)g(co)r(dage)i(pr)n(\023)-33
+b(ef)n(\023)g(er)n(\023)g(e)312 b Ff(M-x)36 b(prefer-coding-system)1902
+2014 y Fg(Info)1902 2166 y Fh(Lire)23 b(une)h(do)r(cumen)n(tation)j
+(Info)557 b Ff(C-h)36 b(i)1902 2245 y Fh(Rec)n(herc)n(her)25
+b(une)f(fonction/v)l(ariable)h(dans)f(Info)110 b Ff(C-h)36
+b(S)1902 2354 y Fh(Se)24 b(d)n(\023)-33 b(eplacer)25
+b(dans)f(un)f(n\033ud)i(:)1973 2462 y(P)n(age)f(suiv)l(an)n(te)948
+b Ff(SPC)1973 2542 y Fh(P)n(age)24 b(pr)n(\023)-33 b(ec)n(\023)g(eden)n
+(te)873 b Ff(DEL)1973 2621 y Fh(D)n(\023)-33 b(ebut)24
+b(du)g(n\033ud)881 b Ff(.)71 b Fh(\(p)r(oin)n(t\))1902
+2730 y(Na)n(vigation)25 b(en)n(tre)f(n\033uds)g(:)1973
+2838 y(N\033ud)f Fe(suiv)-5 b(an)n(t)907 b Ff(n)1973
+2918 y Fh(N\033ud)23 b Fe(pr)n(\023)-39 b(ec)n(\023)g(eden)n(t)814
+b Ff(p)1973 2997 y Fe(Remon)n(ter)22 b Fh(d'un)i(niv)n(eau)634
+b Ff(u)1973 3077 y Fh(Choisir)22 b(un)i(sujet)g(du)g(men)n(u)g(par)g
+(son)f(nom)177 b Ff(m)1973 3157 y Fh(Choisir)22 b(le)i
+Fb(n)5 b Fh(-i)n(\022)-33 b(eme)23 b(sujet)h(\(1{9\))488
+b Fb(n)1973 3236 y Fh(Suivre)18 b(une)h(r)n(\023)-33
+b(ef)n(\023)g(erence)18 b(crois)n(\023)-33 b(ee)19 b(\(retour)f(a)n(v)n
+(ec)i Ff(l)p Fh(\))71 b Ff(f)1973 3316 y Fh(Rev)n(enir)23
+b(au)h(dernier)g(n\033ud)g(visit)n(\023)-33 b(e)413 b
+Ff(l)1973 3396 y Fh(Aller)22 b(au)i(sommaire)f(Info)658
+b Ff(d)1973 3475 y Fh(Aller)22 b(au)i(n\033ud)g(le)g(plus)f(haut)i(du)f
+(man)n(uel)189 b Ff(t)1973 3555 y Fh(Aller)22 b(sur)h(un)h(n\033ud)g
+(par)g(son)f(nom)395 b Ff(g)1902 3663 y Fh(Autres)24
+b(:)1973 3772 y(Aller)e(au)i Fe(didacticiel)e Fh(Info)591
+b Ff(h)1973 3851 y Fh(Rec)n(herc)n(her)24 b(un)g(sujet)g(dans)g
+(l'index)364 b Ff(i)1973 3931 y Fh(Rec)n(herc)n(her)24
+b(un)g(n\033ud)g(par)g(expr.)31 b(rationnelle)73 b Ff(s)1973
+4011 y Fe(Quitter)22 b Fh(Info)962 b Ff(q)4098 -421 y
+Fg(Registres)4098 -271 y Fh(Sauv)n(er)24 b(la)g(r)n(\023)-33
+b(egion)24 b(dans)g(un)g(registre)423 b Ff(C-x)36 b(r)g(s)4098
+-191 y Fh(Ins)n(\023)-33 b(erer)24 b(le)f(con)n(ten)n(u)j(d'un)e
+(registre)480 b Ff(C-x)36 b(r)g(i)4098 -83 y Fh(Sauv)n(er)24
+b(la)g(v)l(aleur)g(du)g(p)r(oin)n(t)g(dans)g(un)g(registre)139
+b Ff(C-x)36 b(r)g(SPC)4098 -3 y Fh(Aller)22 b(au)i(p)r(oin)n(t)h(sauv)n
+(\023)-33 b(e)24 b(dans)g(un)g(registre)294 b Ff(C-x)36
+b(r)g(j)4098 172 y Fg(Macros)i(cla)m(vier)4098 322 y
+Fe(Lancer)23 b Fh(la)h(d)n(\023)-33 b(e\014nition)24
+b(d'une)g(macro)g(cla)n(vier)180 b Ff(C-x)36 b(\()4098
+402 y Fe(T)-7 b(erminer)23 b Fh(la)g(d)n(\023)-33 b(e\014nition)25
+b(d'une)f(macro)g(cla)n(vier)93 b Ff(C-x)36 b(\))4098
+481 y Fe(Ex)n(\023)-39 b(ecuter)24 b Fh(la)f(derni)n(\022)-33
+b(ere)24 b(macro)g(cla)n(vier)f(d)n(\023)-33 b(e\014nie)116
+b Ff(C-x)36 b(e)4098 561 y Fh(F)-6 b(aire)23 b(un)h(a)t(jout)h(\022)-35
+b(a)23 b(la)h(derni)n(\022)-33 b(ere)23 b(macro)h(cla)n(vier)155
+b Ff(C-u)36 b(C-x)g(\()4098 641 y Fh(Nommer)23 b(la)h(derni)n(\022)-33
+b(ere)23 b(macro)h(cla)n(vier)59 b Ff(M-x)37 b(name-last-kbd-macro)4098
+720 y Fh(En)24 b(ins)n(\023)-33 b(erer)23 b(une)h(d)n(\023)-33
+b(e\014nition)25 b(Lisp)297 b Ff(M-x)36 b(insert-kbd-macro)4098
+894 y Fg(Commandes)i(de)f(gestion)h(d'Emacs)g(Lisp)4104
+1036 y Fh(\023)4098 1053 y(Ev)l(aluer)24 b(la)f Fe(s-expression)h
+Fh(a)n(v)l(an)n(t)h(le)f(p)r(oin)n(t)227 b Ff(C-x)36
+b(C-e)4104 1116 y Fh(\023)4098 1133 y(Ev)l(aluer)24 b(la)f
+Fe(defun)h Fh(couran)n(te)620 b Ff(C-M-x)4104 1196 y
+Fh(\023)4098 1212 y(Ev)l(aluer)24 b(la)f Fe(r)n(\023)-39
+b(egion)742 b Ff(M-x)36 b(eval-region)4098 1292 y Fh(Lire)23
+b(et)f(\023)-33 b(ev)l(aluer)25 b(dans)f(le)f(mini-tamp)r(on)333
+b Ff(M-:)4098 1372 y Fh(Charger)24 b(depuis)g(un)g(r)n(\023)-33
+b(ep)r(ertoire)23 b(standard)113 b Ff(M-x)36 b(load-library)4098
+1547 y Fg(P)m(ersonnalisation)g(simple)4098 1697 y Fh(P)n(ersonnaliser)
+23 b(les)g(v)l(ariables)h(et)g(les)g(fon)n(tes)108 b
+Ff(M-x)36 b(customize)4098 1805 y Fh(Exemples)24 b(de)g(d)n(\023)-33
+b(e\014nition)25 b(globale)f(de)g(touc)n(hes)h(en)f(Emacs)g(Lisp)f(:)
+4098 1913 y Ff(\(global-set-key)40 b("\\C-cg")d('goto-line\))4098
+1993 y(\(global-set-key)j("\\M-#")d('query-replace-regexp\))4107
+2168 y Fg(\023)4098 2192 y(Ecriture)g(de)h(commandes)4098
+2342 y Ff(\(defun)f Fb(nom-c)l(ommande)43 b Ff(\()p Fb(ar)l(gs)5
+b Ff(\))4169 2422 y(")p Fb(do)l(cumentation)g Ff(")4169
+2502 y(\(interactive)38 b(")p Fb(template)5 b Ff("\))4169
+2581 y Fb(b)l(o)l(dy)h Ff(\))4098 2689 y Fh(Exemple)24
+b(:)4098 2797 y Ff(\(defun)37 b(cette-ligne-en-haut-de-)q(la-f)q(ene)q
+(tre)42 b(\(line\))4169 2877 y("Positionne)c(la)e(ligne)h(courante)g
+(en)f(haut)g(de)g(la)g(fen^)-35 b(etre.)4098 2957 y(Avec)36
+b(ARG,)h(place)g(le)e(point)i(sur)f(la)g(ligne)h(ARG.")4169
+3037 y(\(interactive)h("P"\))4169 3116 y(\(recenter)f(\(if)g(\(null)f
+(line\))4663 3196 y(0)4592 3276 y(\(prefix-numeric-value)41
+b(line\)\)\)\))4098 3384 y Fh(La)21 b(sp)n(\023)-33 b(eci\014cation)23
+b Ff(interactive)h Fh(indique)d(commen)n(t)h(lire)e(in)n(teractiv)n(e-)
+4098 3463 y(men)n(t)28 b(les)f(param)n(\022)-33 b(etres.)42
+b(F)-6 b(aites)27 b Ff(C-h)37 b(f)e(interactive)30 b
+Fh(p)r(our)e(plus)e(de)4098 3543 y(pr)n(\023)-33 b(ecisions.)4391
+3635 y Fd(Cop)n(yrigh)n(t)4694 3633 y(c)4677 3635 y Fc(\015)21
b Fd(2007)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20
-b(Inc.)2179 3727 y(v2.3)h(p)r(our)f(GNU)g(Emacs)h(v)n(ersion)h(22,)f
-(2006)2309 3771 y(conception)g(de)f(Stephen)g(Gildea)2220
-3835 y(traduction)h(fran\030)-27 b(caise)21 b(d')2831
-3822 y(\023)2826 3835 y(Eric)f(Jacob)r(oni)1746 3900
-y(V)-5 b(ous)22 b(p)r(ouv)n(ez)g(faire)g(et)g(distribuer)f(des)h
-(copies)g(de)f(cette)i(carte,)f(p)r(ourvu)f(que)h(la)1746
-3944 y(note)16 b(de)g(cop)n(yrigh)n(t)g(et)h(cette)f(note)g(de)g(p)r
-(ermission)f(soien)n(t)h(conserv)n(\023)-29 b(ees)19
-b(sur)c(toutes)1746 3989 y(les)21 b(copies.)1746 4054
-y(P)n(our)e(les)g(copies)g(du)f(man)n(uel)g(GNU)g(Emacs,)g(\023)-29
-b(ecriv)n(ez)20 b(\022)-30 b(a)19 b(la)g(F)-5 b(ree)19
-b(Soft)n(w)n(are)i(F)-5 b(oun-)1746 4098 y(dation,)29
+b(Inc.)4531 3699 y(v2.3)h(p)r(our)f(GNU)g(Emacs)h(v)n(ersion)h(22,)f
+(2007)4661 3763 y(conception)g(de)f(Stephen)g(Gildea)4510
+3827 y(traduction)g(fran\030)-27 b(caise)22 b(de)e(Mic)n(ha)n(\177)-29
+b(el)22 b(Cadilhac)4098 3919 y(V)-5 b(ous)22 b(p)r(ouv)n(ez)g(faire)g
+(et)g(distribuer)f(des)h(copies)g(de)f(cette)i(carte,)f(p)r(ourvu)f
+(que)h(la)4098 3983 y(note)16 b(de)g(cop)n(yrigh)n(t)g(et)h(cette)f
+(note)g(de)g(p)r(ermission)f(soien)n(t)h(conserv)n(\023)-29
+b(ees)19 b(sur)c(toutes)4098 4046 y(les)21 b(copies.)4098
+4138 y(P)n(our)d(des)f(copies)h(du)f(man)n(uel)g(GNU)f(Emacs,)h(\023)
+-29 b(ecriv)n(ez)19 b(\022)-30 b(a)17 b(la)h(F)-5 b(ree)18
+b(Soft)n(w)n(are)h(F)-5 b(oun-)4098 4202 y(dation,)29
b(Inc.,)g(51)g(F)-5 b(ranklin)28 b(Street,)h(Fifth)f(Flo)r(or,)h
-(Boston,)i(MA)d(02110-1301)1746 4143 y(USA.)p eop end
+(Boston,)i(MA)d(02110-1301)4098 4266 y(USA.)p eop end
%%Trailer
userdict /end-hook known{end-hook}if
\def\versionnumber{2.3}
\def\versionemacs{22}
-\def\versionyear{2006} % latest update
+\def\versionyear{2007} % latest update
\def\year{2007} % latest copyright year
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
\centerline{v\versionnumber{} pour GNU Emacs version \versionemacs,
\versionyear}
\centerline{conception de Stephen Gildea}
-\centerline{traduction fran\c{c}aise d'\'Eric Jacoboni}
+\centerline{traduction fran\c{c}aise de Micha\"el Cadilhac}
+% previously: Eric Jacoboni
Vous pouvez faire et distribuer des copies de cette carte, pourvu que
la note de copyright et cette note de permission soient conserv\'ees sur
toutes les copies.
-Pour les copies du manuel GNU Emacs, \'ecrivez \`a la Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+Pour des copies du manuel GNU Emacs, \'ecrivez \`a la Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
\endgroup}
\else %2 or 3 columns uses prereduced size
\hsize 3.2in
\vsize 7.95in
- \if 1\the\letterpaper
- \vsize 7.95in
- \else
- \vsize 7.65in
- \fi
- \hoffset -.75in
- \voffset -.745in
+% \hoffset -.75in
+ \hoffset -.49in
+% \voffset -.745in
+ \voffset -.84in
\font\titlefont=cmbx10 \scaledmag2
\font\headingfont=cmbx10 \scaledmag1
\font\smallfont=cmr6
\def\it{\eightit}
\def\tt{\eighttt}
\normalbaselineskip=.8\normalbaselineskip
- \if 1\the\letterpaper
- \normalbaselineskip=.8\normalbaselineskip
- \else
- \normalbaselineskip=.7\normalbaselineskip
- \fi
\normallineskip=.8\normallineskip
\normallineskiplimit=.8\normallineskiplimit
\normalbaselines\rm %make definitions take effect
\chardef\{=`\{
\chardef\}=`\}
-\hyphenation{mini-buf-fer}
+\hyphenation{mini-tam-pon}
\parindent 0pt
\parskip 1ex plus .5ex minus .5ex
% section - new major section. Argument is section name.
\outer\def\section#1{\par\filbreak
- \vskip 2ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
- \vskip 1ex plus 1ex minus 1.5ex}
+ \vskip 2ex plus 1.5ex minus 2.5ex {\headingfont #1}\mark{#1}%
+ \vskip 1.5ex plus 1ex minus 1.5ex}
\newdimen\keyindent
% \key{description of key}{key-name}
% prints the description left-justified, and the key-name in a \kbd
% form near the right margin.
-\def\key#1#2{\leavevmode\hbox to \hsize{\vbox
- {\hsize=.75\hsize\rightskip=1em \tolerance=20000
- \raggedright
- \hskip\keyindent\hangindent=1em\strut#1\strut}\kbd{\quad#2}\hss}}
+\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
+ {\hsize=.75\hsize\rightskip=1em
+ \hskip\keyindent\relax#1}\kbd{#2}\hfil}}
\newbox\metaxbox
\setbox\metaxbox\hbox{\kbd{M-x }}
% Tries to justify the beginning of the command name at the same place
% as \key starts the key name. (The "M-x " sticks out to the left.)
% Note: was \hsize=.74, but changed to avoid overflow in some places.
-\def\metax#1#2{\leavevmode\hbox to \hsize{\vbox
- {\hsize=.66\hsize\rightskip=1em
- \raggedright \tolerance=20000
- \hskip\keyindent\hangindent=1em\strut#1\strut\par}%
- %\hskip-\metaxwidth minus 1fil
- \kbd{#2}\hss}}
+\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
+ {\hskip\keyindent\relax#1\hfil}%
+ \hskip -\metaxwidth minus 1fil
+ \kbd{#2}\hfil}}
% threecol - like "key" but with two key names.
% for example, one for doing the action backward, and one for forward.
\centerline{(pour la version \versionemacs)}
-\section{Lancement d'Emacs}
-
-Pour lancer GNU Emacs \versionemacs, il suffit de taper son nom : \kbd{emacs}
+\section{Lancer Emacs}
-Pour charger un fichier \`a \'editer, voir Fichiers, ci-dessous.
+Pour lancer GNU Emacs \versionemacs, tapez juste son nom : \kbd{emacs}.
\section{Quitter Emacs}
-\key{suspend Emacs (ou l'iconifie sous X)}{C-z}
-\key{quitter d\'efinitivement Emacs}{C-x C-c}
+\key{Suspendre Emacs (ou l'iconifier sous X)}{C-z}
+\key{Quitter d\'efinitivement Emacs}{C-x C-c}
\section{Fichiers}
-\key{{\bf lire} un fichier dans Emacs}{C-x C-f}
-\key{{\bf sauvegarder} un fichier sur disque}{C-x C-s}
-\key{sauvegarder {\bf tous} les fichiers}{C-x s}
-\key{{\bf ins\'erer} le contenu d'un autre fichier dans ce tampon}{C-x i}
-\key{remplacer ce fichier par le fichier voulu}{C-x C-v}
-\key{\'ecrire le tampon dans un fichier donn\'e}{C-x C-w}
-\key{bascule du mode lecture-seule du tampon}{C-x C-q}
+\key{{\bf Lire} un fichier}{C-x C-f}
+\key{{\bf Sauvegarder} un fichier}{C-x C-s}
+\key{Sauvegarder {\bf tous} les fichiers}{C-x s}
+\key{{\bf Ins\'erer} un fichier sous le point (curseur)}{C-x i}
+\key{Remplacer le fichier par un autre fichier}{C-x C-v}
+\key{Sauvegarder sous un autre nom de fichier}{C-x C-w}
+\key{Basculer en mode lecture seule}{C-x C-q}
\section{Obtenir de l'aide}
-Le syst\`eme d'aide est simple. Faites \kbd{C-h} (ou \kbd{F1}) et suivez
-les instructions. Si vous d\'ebutez, faites \kbd{C-h t} pour suivre un
+Le syst\`eme d'aide est simple. Faites \kbd{C-h} (ou \kbd{F1}) et
+suivez les instructions. Si vous d\'ebutez, faites \kbd{C-h t} pour un
{\bf didacticiel}.
-\key{supprimer la fen\^etre d'aide}{C-x 1}
-\key{faire d\'efiler la fen\^etre d'aide}{C-M-v}
+\key{Supprimer la fen\^etre d'aide}{C-x 1}
+\key{Faire d\'efiler la fen\^etre d'aide}{C-M-v}
-\key{apropos : montrer les commandes contenant une certaine cha\^\i{}ne}{C-h a}
-\key{d\'ecrire la fonction lanc\'ee par une touche}{C-h k}
-\key{d\'ecrire une fonction}{C-h f}
-\key{obtenir des informations sp\'ecifiques au mode}{C-h m}
+\key{Rechercher des commandes selon une cha\^\i{}ne}{C-h a}
+\key{D\'ecrire la fonction associ\'ee \`a une touche}{C-h k}
+\key{D\'ecrire une fonction}{C-h f}
+\key{Obtenir des informations relatives au mode}{C-h m}
-\section{R\'ecup\'eration des erreurs}
+\section{R\'ecup\'eration sur erreurs}
-\key{{\bf avorter} une commande partiellement tap\'ee ou ex\'ecut\'ee}{C-g}
-\metax{{\bf r\'ecup\'erer} les fichier perdus par un crash du syst\`eme}{M-x recover-session}
-\metax{{\bf annuler} une modification non souhait\'ee}{C-x u, C-_ {\rm ou} C-/}
-\metax{restaurer un tampon avec son contenu initial}{M-x revert-buffer}
-\key{r\'eafficher un \'ecran perturb\'e}{C-l}
-
-\shortcopyrightnotice
+\key{{\bf Abandonner} une commande}{C-g}
+\metax{{\bf R\'ecup\'erer} les fichiers apr\`es un crash}{M-x recover-session}
+\metax{{\bf Annuler} une modification}{C-x u, C-_ {\rm ou} C-/}
+\metax{Annuler toutes les modifications}{M-x revert-buffer}
+\key{R\'eafficher un \'ecran perturb\'e}{C-l}
\section{Recherche incr\'ementale}
-\key{rechercher vers l'avant}{C-s}
-\key{rechercher vers l'arri\`ere}{C-r}
-\key{rechercher vers l'avant par expression rationnelle}{C-M-s}
-\key{rechercher vers l'arri\`ere par expression rationnelle}{C-M-r}
+\key{Rechercher en avant}{C-s}
+\key{Rechercher en arri\`ere}{C-r}
+\key{Rechercher en avant (expression rationnelle)}{C-M-s}
+\key{Rechercher en arri\`ere (expression rationnelle)}{C-M-r}
-\key{s\'electionner la cha\^\i{}ne de recherche pr\'ec\'edente}{M-p}
-\key{s\'electionner la cha\^\i{}ne de recherche suivante}{M-n}
-\key{sortir de la recherche incr\'ementale}{RET}
-\key{annuler l'effet du dernier caract\`ere}{DEL}
-\key{annuler la recherche en cours}{C-g}
+\key{Utiliser la cha\^\i{}ne de recherche pr\'ec\'edente}{M-p}
+\key{Utiliser la cha\^\i{}ne de recherche suivante}{M-n}
+\key{Quitter la recherche incr\'ementale}{RET}
+\key{Annuler l'effet du dernier caract\`ere}{DEL}
+\key{Annuler la recherche en cours}{C-g}
Refaites \kbd{C-s} ou \kbd{C-r} pour r\'ep\'eter la recherche dans une
-direction quelconque.
-Si Emacs est encore en train de chercher, \kbd{C-g} n'annule que ce
-qui n'a pas \'et\'e fait.
+des directions.
+En cours de recherche, \kbd{C-g} efface les derniers caract\`eres et
+ne conserve que le pr\'efixe d\'ej\`a trouv\'e.
+
+\shortcopyrightnotice
\section{D\'eplacements}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
-\threecol{{\bf entit\'e sur laquelle se d\'eplacer}}{{\bf en arri\`ere}}{{\bf en avant}}
-\threecol{caract\`ere}{C-b}{C-f}
-\threecol{mot}{M-b}{M-f}
-\threecol{ligne}{C-p}{C-n}
-\threecol{aller au d\'ebut (ou \`a la fin) de la ligne}{C-a}{C-e}
-\threecol{phrase}{M-a}{M-e}
-\threecol{paragraphe}{M-\{}{M-\}}
-\threecol{page}{C-x [}{C-x ]}
-\threecol{s-expression}{C-M-b}{C-M-f}
-\threecol{fonction}{C-M-a}{C-M-e}
-\threecol{aller au d\'ebut (ou \`a la fin) du tampon}{M-<}{M->}
+\threecol{{\bf Objet sur lequel se d\'eplacer}}{{\bf En
+ arri\`ere}}{{\bf En avant}}
+\threecol{Caract\`ere}{C-b}{C-f}
+\threecol{Mot}{M-b}{M-f}
+\threecol{Ligne}{C-p}{C-n}
+\threecol{Aller en d\'ebut/fin de la ligne}{C-a}{C-e}
+\threecol{Phrase}{M-a}{M-e}
+\threecol{Paragraphe}{M-\{}{M-\}}
+\threecol{Page}{C-x [}{C-x ]}
+\threecol{S-expression}{C-M-b}{C-M-f}
+\threecol{Fonction}{C-M-a}{C-M-e}
+\threecol{Aller en d\'ebut/fin du tampon}{M-<}{M->}
}
-\key{passer \`a l'\'ecran suivant}{C-v}
-\key{passer \`a l'\'ecran pr\'ec\'edent}{M-v}
-\key{d\'efiler l'\'ecran vers la droite}{C-x <}
-\key{d\'efiler l'\'ecran vers la gauche}{C-x >}
-\key{placer la ligne courante au centre de l'\'ecran}{C-u C-l}
+\key{Passer \`a l'\'ecran suivant}{C-v}
+\key{Passer \`a l'\'ecran pr\'ec\'edent}{M-v}
+\key{Faire d\'efiler l'\'ecran vers la gauche}{C-x <}
+\key{Faire d\'efiler l'\'ecran vers la droite}{C-x >}
+\key{Placer la ligne courante au centre de l'\'ecran}{C-u C-l}
\section{D\'etruire et supprimer}
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
-\threecol{{\bf entit\'e \`a supprimer}}{{\bf en arri\`ere}}{{\bf en avant}}
-\threecol{caract\`ere (suppression, pas destruction)}{DEL}{C-d}
-\threecol{mot}{M-DEL}{M-d}
-\threecol{ligne (jusqu'\`a la fin)}{M-0 C-k}{C-k}
-\threecol{phrase}{C-x DEL}{M-k}
-\threecol{s-expression}{M-- C-M-k}{C-M-k}
+\threecol{{\bf Objet \`a supprimer}}{{\bf En arri\`ere}}{{\bf En avant}}
+\threecol{Caract\`ere (suppression)}{DEL}{C-d}
+\threecol{Mot}{M-DEL}{M-d}
+\threecol{Ligne (jusqu'au d\'ebut/fin)}{M-0 C-k}{C-k}
+\threecol{Phrase}{C-x DEL}{M-k}
+\threecol{S-expression}{M-- C-M-k}{C-M-k}
}
-\key{d\'etruire une {\bf r\'egion}}{C-w}
-\key{copier une r\'egion dans le kill ring}{M-w}
-\key{d\'etruire jusqu'\`a l'occurrence suivante de {\it car}}{M-z {\it car}}
+\key{D\'etruire une {\bf r\'egion}}{C-w}
+\key{Copier une r\'egion dans le {\it kill ring}}{M-w}
+\key{D\'etruire jusqu'\`a l'occurrence suivante de {\it car}}{M-z {\it car}}
-\key{r\'ecup\'erer la derni\`ere chose d\'etruite}{C-y}
-\key{remplacer la derni\`ere r\'ecup\'eration par ce qui a \'et\'e d\'etruit avant}{M-y}
+\key{R\'ecup\'erer la derni\`ere r\'egion d\'etruite}{C-y}
+\key{R\'ecup\'erer la r\'egion d\'etruite pr\'ec\'edente}{M-y}
\section{Marquer}
-\key{placer la marque ici}{C-@ {\rm ou} C-SPC}
-\key{\'echanger le point et la marque}{C-x C-x}
+\key{Placer la marque au point}{C-@ {\rm ou} C-SPC}
+\key{\'Echanger le point et la marque}{C-x C-x}
-\key{placer la marque {\it arg\/} {\bf mots} plus loin}{M-@}
-\key{marquer le {\bf paragraphe}}{M-h}
-\key{marquer la {\bf page}}{C-x C-p}
-\key{marquer la {\bf s-expression}}{C-M-@}
-\key{marquer la {\bf fonction}}{C-M-h}
-\key{marquer tout le {\bf tampon}}{C-x h}
+\key{Placer la marque un {\bf mot} plus loin}{M-@}
+\key{Marquer le {\bf paragraphe}}{M-h}
+\key{Marquer la {\bf page}}{C-x C-p}
+\key{Marquer la {\bf s-expression}}{C-M-@}
+\key{Marquer la {\bf fonction}}{C-M-h}
+\key{Marquer tout le {\bf tampon}}{C-x h}
\section{Remplacement interactif}
-\key{remplacer interactivement une cha\^\i{}ne de texte}{M-\%}
+\key{Remplacer une cha\^\i{}ne de texte}{M-\%}
% query-replace-regexp est liee a C-M-% mais on ne peut pas le
% taper dans une console.
-% Hack to prevent overflow. Please someone fix this properly.
-\metax{en utilisant les expressions \hskip 20pt rationnelles}
-{\hskip -30pt M-x query-replace-regexp}
+\metax{\hskip 10pt \`a l'aide d'expr. rationnelles}{M-x query-replace-regexp}
-Les r\'eponses admises dans le mode de remplacement interactif sont :
+R\'eponses possibles pour chaque occurrence dans le mode de
+remplacement interactif :
-\key{{\bf remplacer} celle-l\`a, passer \`a la suivante}{SPC}
-\key{remplacer celle-l\`a, rester l\`a}{,}
-\key{{\bf passer} \`a la suivante sans remplacer}{DEL}
-\key{remplacer toutes les correspondances suivantes}{!}
-\key{{\bf revenir} \`a la correspondance pr\'ec\'edente}{^}
-\key{{\bf sortir} du remplacement interactif}{RET}
-\key{entrer dans l'\'edition r\'ecursive (\kbd{C-M-c} pour sortir)}{C-r}
+\key{{\bf Remplacer} celle-l\`a, passer \`a la suivante}{SPC}
+\key{Remplacer celle-l\`a, rester l\`a}{,}
+\key{{\bf Passer} \`a la suivante sans remplacer}{DEL}
+\key{Remplacer toutes les occurrences suivantes}{!}
+\key{{\bf Revenir} \`a l'occurrence pr\'ec\'edente}{^}
+\key{{\bf Quitter} le remplacement interactif}{RET}
+\key{{\bf \'Editer} avant de reprendre (\kbd{C-M-c} : sortir)}{C-r}
\section{Fen\^etres multiples}
-Lorsqu'il y a deux commandes, la seconde est une commande identique \`a
-la premi\`ere pour un cadre au lieu d'une fen\^etre.
+Lorsqu'il y a deux commandes, la seconde est celle qui concerne non
+pas les fen\^etres mais les cadres.
{\setbox0=\hbox{\kbd{0}}\advance\hsize by 0\wd0
\paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
-\threecol{supprimer toutes les autres fen\^etres}{C-x 1\ \ \ \ }{C-x 5 1}
-\threecol{diviser la fen\^etre horizontalement}{C-x 2\ \ \ \ }{C-x 5 2}
-\threecol{supprimer cette fen\^etre}{C-x 0\ \ \ \ }{C-x 5 0}
+\threecol{Supprimer toutes les autres fen\^etres}{C-x 1\ \ \ \ }{C-x 5 1}
+\threecol{Supprimer cette fen\^etre}{C-x 0\ \ \ \ }{C-x 5 0}
+\threecol{Diviser la fen\^etre horizontalement}{C-x 2\ \ \ \ }{C-x 5 2}
}}
-\key{diviser la fen\^etre verticalement}{C-x 3}
+\key{Diviser la fen\^etre verticalement}{C-x 3}
-\key{faire d\'efiler l'autre fen\^etre}{C-M-v}
+\key{Faire d\'efiler l'autre fen\^etre}{C-M-v}
%% tabskip reduced from 10 to 3pt to fit on letterpaper.
{\setbox0=\hbox{\kbd{0}}\advance\hsize by 2\wd0
\paralign to \hsize{#\tabskip=3pt plus 1 fil&#\tabskip=0pt&#\cr
-\threecol{placer le curseur dans une autre fen\^etre}{C-x o}{C-x 5 o}
-
-%% Hack in a line break to avoid overflow.
-\threecol{\raggedright s\'electionner le tampon dans\cr
-\hskip 10pt l'autre fen\^etre}{C-x 4 b}{C-x 5 b}
-\threecol{afficher le tampon dans l'autre fen\^etre}{C-x 4 C-o}{C-x 5 C-o}
-\threecol{charger un fichier dans l'autre fen\^etre}{C-x 4 f}{C-x 5 f}
-%% Hack in a line break to avoid overflow.
-\threecol{\raggedright charger un fichier en lecture seule\cr
-\hskip 10pt dans l'autre fen\^etre}{C-x 4 r}{C-x 5 r}
-\threecol{lancer Dired dans l'autre fen\^etre}{C-x 4 d}{C-x 5 d}
-\threecol{trouver un tag dans l'autre fen\^etre}{C-x 4 .}{C-x 5 .}
+\threecol{S\'electionner une autre fen\^etre}{C-x o}{C-x 5 o}
+
+\threecol{Choisir un tampon (autre fen\^etre)}{C-x 4 b}{C-x 5 b}
+\threecol{Afficher un tampon (autre fen\^etre)}{C-x 4 C-o}{C-x 5 C-o}
+\threecol{Lire un fichier (autre fen\^etre)}{C-x 4 f}{C-x 5 f}
+\threecol{\hskip 10pt en lecture seule}{C-x 4 r}{C-x 5 r}
+\threecol{Lancer Dired (autre fen\^etre)}{C-x 4 d}{C-x 5 d}
+\threecol{Trouver un tag (autre fen\^etre)}{C-x 4 .}{C-x 5 .}
}}
-\key{agrandir la fen\^etre}{C-x ^}
-\key{rapetisser la fen\^etre}{C-x \{}
-\key{\'elargir la fen\^etre}{C-x \}}
+\key{Agrandir la fen\^etre verticalement}{C-x ^}
+\key{R\'eduire la fen\^etre horizontalement}{C-x \{}
+\key{Agrandir la fen\^etre horizontalement}{C-x \}}
\section{Formater}
-\key{indenter la {\bf ligne} courante (d\'epend du mode)}{TAB}
-\key{indenter la {\bf r\'egion} courante (d\'epend du mode)}{C-M-\\}
-\key{indenter la {\bf s-expression} courante (d\'epend du mode)}{C-M-q}
-\key{indenter la r\'egion sur {\it arg\/} colonnes}{C-x TAB}
+\key{Indenter la {\bf ligne} courante (selon le mode)}{TAB}
+\key{Indenter la {\bf r\'egion} courante (selon le mode)}{C-M-\\}
+\key{Indenter la {\bf s-expr.} courante (selon le mode)}{C-M-q}
+\key{Indenter la r\'egion sur une colonne}{C-x TAB}
+\key{Ins\'erer un retour \`a la ligne apr\`es le point}{C-o}
+\key{D\'eplacer le reste de la ligne vers le bas}{C-M-o}
+\key{Supprimer les lignes vierges autour du point}{C-x C-o}
+\key{Joindre \`a la ligne pr\'ec\'edente (suiv. avec {\it arg\/})}{M-^}
+\key{Supprimer tous les espaces autour du point}{M-\\}
+\key{Mettre exactement une espace au point}{M-SPC}
-\key{ins\'erer un newline apr\`es le point}{C-o}
-\key{d\'eplacer le reste de la ligne vers le bas}{C-M-o}
-\key{supprimer les lignes blanches autour du point}{C-x C-o}
-\key{joindre la ligne \`a la pr\'ec\'edente (\`a la suivante avec arg)}{M-^}
-\key{supprimer tous les espaces autour du point}{M-\\}
-\key{mettre exactement un espace \`a l'emplacement du point}{M-SPC}
+\key{Formater le paragraphe}{M-q}
+\key{Placer la marge droite \`a {\it arg\/} colonnes}{C-u {\it arg\/} C-x f}
+\key{D\'efinir le pr\'efixe des lignes}{C-x .}
-\key{remplir le paragraphe}{M-q}
-\key{placer la marge droite}{C-x f}
-\key{d\'efinir le pr\'efixe par lequel commencera chaque ligne}{C-x .}
-
-\key{d\'efinir la fonte}{M-o}
+\key{D\'efinir la fonte}{M-o}
\section{Modifier la casse}
-\key{mettre le mot en majuscules}{M-u}
-\key{mettre le mot en minuscules}{M-l}
-\key{mettre le mot en capitales}{M-c}
+\key{Mettre le mot en capitales}{M-u}
+\key{Mettre le mot en minuscules}{M-l}
+\key{Mettre une majuscule au mot}{M-c}
-\key{mettre la r\'egion en majuscules}{C-x C-u}
-\key{mettre la r\'egion en minuscules}{C-x C-l}
+\key{Mettre la r\'egion en capitales}{C-x C-u}
+\key{Mettre la r\'egion en minuscules}{C-x C-l}
\section{Le mini-tampon}
-Les touches suivantes sont utilisables dans le mini-tampon :
+Dans le mini-tampon :
-\key{compl\'eter autant que possible}{TAB}
-\key{compl\'eter un mot}{SPC}
-\key{compl\'eter et ex\'ecuter}{RET}
-\key{montrer les compl\'etions possibles}{?}
-\key{rechercher l'entr\'ee pr\'ec\'edente du mini-tampon}{M-p}
-\key{rechercher l'entr\'ee suivante du mini-tampon ou le d\'efaut}{M-n}
-\key{rechercher \`a rebours par expr. rationnelle dans l'historique}{M-r}
-\key{rechercher vers l'avant par expr. rationnelle dans l'historique}{M-s}
-\key{annuler la commande}{C-g}
+\key{Compl\'eter autant que possible}{TAB}
+\key{Compl\'eter un mot}{SPC}
+\key{Compl\'eter et ex\'ecuter}{RET}
+\key{Montrer les compl\`etements possibles}{?}
+\key{Utiliser l'entr\'ee pr\'ec\'edente du mini-tampon}{M-p}
+\key{Utiliser l'entr\'ee suivante du mini-tampon}{M-n}
+\key{Rechercher en arri\`ere dans l'historique}{M-r}
+\key{Rechercher en avant dans l'historique}{M-s}
+\key{Quitter en annulant la commande}{C-g}
-Faites \kbd{C-x ESC ESC} pour \'editer et r\'ep\'eter la derni\`ere commande
-ayant utilis\'e le minitampon. Faites \kbd{F10} pour activer la barre de
-menu utilisant le minitampon.
+Faites \kbd{C-x ESC ESC} pour \'editer et r\'ep\'eter la derni\`ere
+commande ayant utilis\'e le mini-tampon. Faites \kbd{F10} pour
+utiliser la barre de menu sur un terminal en utilisant le mini-tampon.
\newcolumn
\title{Carte de r\'ef\'erence de GNU Emacs}
\section{Tampons}
-\key{s\'electionner un autre tampon}{C-x b}
-\key{\'enum\'erer tous les tampons}{C-x C-b}
-\key{supprimer un tampon}{C-x k}
+\key{Choisir un autre tampon}{C-x b}
+\key{Lister tous les tampons}{C-x C-b}
+\key{Supprimer un tampon}{C-x k}
\section{Transposer}
-\key{transposer des {\bf caract\`eres}}{C-t}
-\key{transposer des {\bf mots}}{M-t}
-\key{transposer des {\bf lignes}}{C-x C-t}
-\key{transposer des {\bf s-expressions}}{C-M-t}
+\key{Transposer des {\bf caract\`eres}}{C-t}
+\key{Transposer des {\bf mots}}{M-t}
+\key{Transposer des {\bf lignes}}{C-x C-t}
+\key{Transposer des {\bf s-expressions}}{C-M-t}
\section{V\'erifier l'orthographe}
-\key{v\'erifier l'orthographe du mot courant}{M-\$}
-\metax{v\'erifier l'orthographe de tous les mots d'une r\'egion}{M-x ispell-region}
-\metax{v\'erifier l'orthographe de tout le tampon}{M-x ispell-buffer}
+\key{V\'erifier l'orthographe du mot courant}{M-\$}
+\metax{V\'erifier l'orthographe d'une r\'egion}{M-x ispell-region}
+\metax{V\'erifier l'orthographe de tout le tampon}{M-x ispell-buffer}
\section{Tags}
-\key{trouver un tag (une d\'efinition)}{M-.}
-\key{trouver l'occurrence suivante du tag}{C-u M-.}
-\metax{sp\'ecifier un nouveau fichier de tags}{M-x visit-tags-table}
+\key{Trouver un tag (une d\'efinition)}{M-.}
+\key{Passer \`a l'occurrence suivante du tag}{C-u M-.}
+\metax{Sp\'ecifier un autre fichier de tags}{M-x visit-tags-table}
+
+\metax{Rechercher dans tous les fichiers des tags}{M-x tags-search}
-\metax{rechercher par expr. rationnelles dans tous les fichiers du
- tableau de tags}{M-x tags-search}
-%% Overflow hack.
-\metax{lancer un remplacement interactif sur tous les fichiers}%
-{\hskip -9pt M-x tags-query-replace}
-\key{continuer la derni\`ere recherche de tags ou le remplacement interactif}{M-,}
+\metax{Remplacer dans tous les fichiers}{M-x tags-query-replace}
+\key{Continuer la recherche ou le remplacement}{M-,}
-\section{Shells}
+\section{Shell}
-\key{ex\'ecuter une commande shell}{M-!}
-\key{lancer une commande shell sur la r\'egion}{M-|}
-\key{filtrer la r\'egion avec une commande shell}{C-u M-|}
-\key{lancer un shell dans la fen\^etre \kbd{*shell*}}{M-x shell}
+\key{Ex\'ecuter une commande shell}{M-!}
+\key{Lancer une commande shell sur la r\'egion}{M-|}
+\key{Filtrer la r\'egion avec une commande shell}{C-u M-|}
+\key{Lancer un shell dans la fen\^etre {\tt *shell*}}{M-x shell}
\section{Rectangles}
-\key{copier le rectangle dans le registre}{C-x r r}
-\key{d\'etruire le rectangle}{C-x r k}
-\key{r\'ecup\'erer le rectangle}{C-x r y}
-\key{ouvrir le rectangle, en d\'ecalant le texte \`a droite}{C-x r o}
-\key{vider le rectangle}{C-x r c}
-\key{pr\'efixer chaque ligne avec une cha\^\i{}ne}{C-x r t}
+\key{Copier le rectangle dans un registre}{C-x r r}
+\key{D\'etruire le rectangle}{C-x r k}
+\key{R\'ecup\'erer le rectangle}{C-x r y}
+\key{D\'ecaler le rectangle \`a droite}{C-x r o}
+\key{Vider le rectangle}{C-x r c}
+\key{Pr\'efixer chaque ligne du rectangle}{C-x r t}
\section{Abr\'eviations}
-\key{ajouter une abr\'eviation globale}{C-x a g}
-\key{ajouter une abr\'eviation locale au mode}{C-x a l}
-\key{ajouter une expansion globale pour cette abr\'eviation}{C-x a i g}
-\key{ajouter une expansion locale au mode pour cette abr\'eviation}{C-x a i l}
-\key{faire une expansion explicite de cette abr\'eviation}{C-x a e}
+\key{Ajouter une abr\'eviation globale}{C-x a g}
+\key{Ajouter une abr\'eviation locale au mode}{C-x a l}
+\key{Ajouter une expansion globale}{C-x a i g}
+\key{Ajouter une expansion locale au mode}{C-x a i l}
+\key{Faire une expansion explicite de l'abr\'eviation}{C-x a e}
-\key{faire une expansion dynamique du mot pr\'ec\'edent}{M-/}
+\key{Faire une expansion du mot pr\'ec\'edent}{M-/}
\section{Expressions rationnelles}
-\key{un unique caract\`ere quelconque, sauf une fin de ligne}{. {\rm(point)}}
-\key{z\'ero r\'ep\'etition ou plus}{*}
-\key{une r\'ep\'etition ou plus}{+}
-\key{z\'ero ou une r\'ep\'etition}{?}
-\key{caract\`ere sp\'ecial pour quoter l'expression rationnelle {\it c\/}}{\\{\it c}}
-\key{alternative (``ou'')}{\\|}
-\key{regroupement}{\\( {\rm$\ldots$} \\)}
-\key{le m\^eme texte que dans le {\it n\/}i\`eme groupe}{\\{\it n}}
-\key{limite de mot}{\\b}
-\key{non limite de mot}{\\B}
+\key{Un caract\`ere quelconque, sauf fin de ligne}{. {\rm(point)}}
+\key{Z\'ero r\'ep\'etition ou plus}{*}
+\key{Une r\'ep\'etition ou plus}{+}
+\key{Z\'ero ou une r\'ep\'etition}{?}
+\key{\'Echapper le caract\`ere sp\'ecial {\it c\/}}{\\{\it c}}
+\key{Alternative (``ou'' non exclusif)}{\\|}
+\key{Regroupement}{\\( {\rm$\ldots$} \\)}
+\key{Reprendre le texte du {\it n\/}-i\`eme groupement}{\\{\it n}}
+\key{Limite de mot}{\\b}
+\key{Non limite de mot}{\\B}
%% tabskip reduced from 10 to 5pt for letterpaper.
\paralign to \hsize{#\tabskip=5pt plus 1 fil&#\tabskip=0pt&#\cr
-\threecol{{\bf entit\'e}}{{\bf d\'ebut}}{{\bf fin}}
-\threecol{ligne}{^}{\$}
-\threecol{mot}{\\<}{\\>}
-\threecol{tampon}{\\`}{\\'}
-
-\threecol{{\bf classe de caract\`ere}}{{\bf correspond}}
-{{\bf correspond \`a d'autres}}
-\threecol{ensemble explicite}{[ {\rm$\ldots$} ]}{[^ {\rm$\ldots$} ]}
-\threecol{caract\`ere de mot}{\\w}{\\W}
-%% Overflow hack.
-\threecol{\raggedright caract\`ere avec la\cr \hskip 5pt syntaxe {\it c}}%
-{\\s{\it c}}{\\S{\it c}}
+\threecol{{\bf Objet}}{{\bf D\'ebut}}{{\bf Fin}}
+\threecol{Ligne}{^}{\$}
+\threecol{Mot}{\\<}{\\>}
+\threecol{Tampon}{\\`}{\\'}
+
+\threecol{{\bf Classe de caract\`ere}}{{\bf Correspond}}%
+{{\bf Compl\'ement}}
+\threecol{Ensemble explicite}{[ {\rm$\ldots$} ]}{[^ {\rm$\ldots$} ]}
+\threecol{Caract\`ere de mot}{\\w}{\\W}
+\threecol{Caract\`ere avec la syntaxe {\it c}}{\\s{\it c}}{\\S{\it c}}
}
\section{Jeux de caract\`eres internationaux}
-\key{indiquer la langue principale}{C-x RET l}
-%% Overflow hack.
-\metax{montrer toutes les m\'ethodes de saisie}
-{\hskip -10pt M-x list-input-methods}
-\key{activer ou d\'esactiver la m\'ethode de saisie}{C-\\}
-\key{choisir le syst\`eme de codage pour la commande suivante}{C-x RET c}
-%% Overflow hack.
-\metax{montrer tous les syst\`emes de codage}%
-{\hskip -10pt M-x list-coding-systems}
-%% Overflow hack.
-\metax{choisir le syst\`eme de codage pr\'ef\'er\'e}%
-{\hskip -10pt M-x prefer-coding-system}
+\key{Pr\'eciser la langue principale}{C-x RET l}
+\metax{Lister les m\'ethodes de saisie}{M-x list-input-methods}
+\key{Activer/d\'esactiver la m\'ethode de saisie}{C-\\}
+\key{Choisir le codage pour la commande suivante}{C-x RET c}
+\metax{Lister les codages}{M-x list-coding-systems}
+\metax{Choisir le codage pr\'ef\'er\'e}{M-x prefer-coding-system}
\section{Info}
-\key{entrer dans le visualisateur de la documentation Info}{C-h i}
-\key{chercher une fonction ou une variable pr\'ecise dans Info}{C-h S}
+\key{Lire une documentation Info}{C-h i}
+\key{Rechercher une fonction/variable dans Info}{C-h S}
\beginindentedkeys
Se d\'eplacer dans un n\oe{}ud :
-\key{une page plus bas}{SPC}
-\key{une page plus haut}{DEL}
-\key{d\'ebut du n\oe{}ud}{. {\rm (point)}}
+\key{Page suivante}{SPC}
+\key{Page pr\'ec\'edente}{DEL}
+\key{D\'ebut du n\oe{}ud}{. {\rm (point)}}
-Passer de n\oe{}ud en n\oe{}ud :
+Navigation entre n\oe{}uds :
-\key{n\oe{}ud {\bf suivant}}{n}
-\key{n\oe{}ud {\bf pr\'ec\'edent}}{p}
-\key{aller {\bf plus haut}}{u}
-\key{choisir un sujet de menu par son nom}{m}
-\key{choisir le {\it n\/}i\`eme sujet de menu par son num\'ero (1--9)}{{\it n}}
-\key{suivre une r\'ef\'erence crois\'ee (on revient avec \kbd{l})}{f}
-\key{revenir au dernier n\oe{}ud visit\'e}{l}
-\key{revenir au n\oe{}ud du r\'epertoire}{d}
-\key{aller au n\oe{}ud de plus haut niveau du fichier Info}{t}
-\key{aller sur n'importe quel n\oe{}ud par son nom}{g}
+\key{N\oe{}ud {\bf suivant}}{n}
+\key{N\oe{}ud {\bf pr\'ec\'edent}}{p}
+\key{{\bf Remonter} d'un niveau}{u}
+\key{Choisir un sujet du menu par son nom}{m}
+\key{Choisir le {\it n\/}-i\`eme sujet (1--9)}{{\it n}}
+\key{Suivre une r\'ef\'erence crois\'ee (retour avec \kbd{l})}{f}
+\key{Revenir au dernier n\oe{}ud visit\'e}{l}
+\key{Aller au sommaire Info}{d}
+\key{Aller au n\oe{}ud le plus haut du manuel}{t}
+\key{Aller sur un n\oe{}ud par son nom}{g}
Autres :
-\key{lancer le {\bf didacticiel} Info}{h}
-\key{chercher un sujet dans l'index}{i}
-\key{rechercher les n\oe{}uds avec une expression rationnelle}{s}
-\key{{\bf quitter} Info}{q}
+\key{Aller au {\bf didacticiel} Info}{h}
+\key{Rechercher un sujet dans l'index}{i}
+\key{Rechercher un n\oe{}ud par expr. rationnelle}{s}
+\key{{\bf Quitter} Info}{q}
\endindentedkeys
\section{Registres}
-\key{sauver la r\'egion dans un registre}{C-x r s}
-\key{ins\'erer le contenu du registre dans le tampon}{C-x r i}
+\key{Sauver la r\'egion dans un registre}{C-x r s}
+\key{Ins\'erer le contenu d'un registre}{C-x r i}
-\key{sauver la valeur du point dans un registre}{C-x r SPC}
-\key{sauter au point sauv\'e dans le registre}{C-x r j}
+\key{Sauver la valeur du point dans un registre}{C-x r SPC}
+\key{Aller au point sauv\'e dans un registre}{C-x r j}
\section{Macros clavier}
-\key{{\bf lancer} la d\'efinition d'une macro clavier}{C-x (}
-\key{{\bf terminer} la d\'efinition d'une macro clavier}{C-x )}
-\key{{\bf ex\'ecuter} la derni\`ere macro clavier d\'efinie}{C-x e}
-\key{ajouter \`a la derni\`ere macro clavier}{C-u C-x (}
-\metax{donner un nom \`a la derni\`ere macro clavier}{M-x name-last-kbd-macro}
-\metax{ins\'erer une d\'efinition Lisp dans le tampon}{M-x insert-kbd-macro}
+\key{{\bf Lancer} la d\'efinition d'une macro clavier}{C-x (}
+\key{{\bf Terminer} la d\'efinition d'une macro clavier}{C-x )}
+\key{{\bf Ex\'ecuter} la derni\`ere macro clavier d\'efinie}{C-x e}
+\key{Faire un ajout \`a la derni\`ere macro clavier}{C-u C-x (}
+\metax{Nommer la derni\`ere macro clavier}{M-x name-last-kbd-macro}
+\metax{En ins\'erer une d\'efinition Lisp}{M-x insert-kbd-macro}
\section{Commandes de gestion d'Emacs Lisp}
-\key{\'evaluer la {\bf s-expression} situ\'ee avant le point}{C-x C-e}
-\key{\'evaluer la {\bf defun} courante}{C-M-x}
-\metax{\'evaluer la {\bf r\'egion}}{M-x eval-region}
-\key{lire et \'evaluer le mini-tampon}{M-:}
-\metax{charger \`a partir du r\'epertoire syst\`eme standard}{M-x load-library}
+\key{\'Evaluer la {\bf s-expression} avant le point}{C-x C-e}
+\key{\'Evaluer la {\bf defun} courante}{C-M-x}
+\metax{\'Evaluer la {\bf r\'egion}}{M-x eval-region}
+\key{Lire et \'evaluer dans le mini-tampon}{M-:}
+\metax{Charger depuis un r\'epertoire standard}{M-x load-library}
\section{Personnalisation simple}
-\metax{personnaliser les variables et les fontes}{M-x customize}
+\metax{Personnaliser les variables et les fontes}{M-x customize}
% The intended audience here is the person who wants to make simple
% customizations and knows Lisp syntax.
-Cr\'eation de liaisons de touches globales en Emacs Lisp (exemples):
+Exemples de d\'efinition globale de touches en Emacs Lisp :
\beginexample%
(global-set-key "\\C-cg" 'goto-line)
\beginexample%
(defun \<nom-commande> (\<args>)
- "\<documentation>" (interactive "\<template>")
+ "\<documentation>"
+ (interactive "\<template>")
\<body>)
\endexample
\beginexample%
(defun cette-ligne-en-haut-de-la-fenetre (line)
-%% Leading space omitted to avoid linebreak and underfull hbox.
-"Repositionne la ligne du point en haut de la fenetre.
+ "Positionne la ligne courante en haut de la fen\^etre.
Avec ARG, place le point sur la ligne ARG."
(interactive "P")
(recenter (if (null line)
\key{abort current search}{C-g}
Use \kbd{C-s} or \kbd{C-r} again to repeat the search in either direction.
-If Emacs is still searching, \kbd{C-g} cancels only the part not done.
+If Emacs is still searching, \kbd{C-g} cancels only the part not matched.
\shortcopyrightnotice
\key{abort command}{C-g}
Type \kbd{C-x ESC ESC} to edit and repeat the last command that used the
-minibuffer. Type \kbd{F10} to activate the menu bar using the minibuffer.
+minibuffer. Type \kbd{F10} to activate menu bar items on text terminals.
\newcolumn
\title{GNU Emacs Reference Card}
\beginexample%
(defun this-line-to-top-of-window (line)
- "Reposition line point is on to top of window.
+ "Reposition current line to top of window.
With ARG, put point on line ARG."
(interactive "P")
(recenter (if (null line)
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * Version 22.1 released.
+
2007-01-30 Kenichi Handa <handa@m17n.org>
* CXTERM-DIC/CCDOSPY.tit, CXTERM-DIC/PY-b5.tit, CXTERM-DIC/SW.tit,
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * Version 22.1 released.
+
2007-02-26 Francesco Potort\e,Al\e(B <pot@gnu.org>
* Makefile.in (etags, ctags): Define EMACS_NAME as "GNU Emacs".
.PHONY: $(ALL)
-VERSION = 22.0.99
+VERSION = 22.1
LOCAL_FLAGS = -DWINDOWSNT -DDOS_NT -DSTDC_HEADERS=1 -DNO_LDAV=1 \
-DNO_ARCHIVES=1 -DHAVE_CONFIG_H=1 -I../nt/inc \
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * Version 22.1 released.
+
+2007-06-01 Chong Yidong <cyd@stupidchicken.com>
+
+ * paren.el (show-paren-function): Undo 2007-04-19 and 2007-04-20
+ changes.
+
+2007-05-31 Richard Stallman <rms@gnu.org>
+
+ * dired.el (dired-do-delete, dired-do-flagged-delete): Doc fixes.
+
+2007-05-29 Martin Rudalics <rudalics@gmx.at>
+
+ * textmodes/table.el (table--point-entered-cell-function)
+ (table--point-left-cell-function): Bind
+ `inhibit-point-motion-hooks' to t.
+
+2007-05-29 Nikolaj Schumacher <n_schumacher@web.de> (tiny change)
+
+ * emacs-lisp/rx.el (rx): Doc fix.
+
+2007-05-28 Chong Yidong <cyd@stupidchicken.com>
+
+ * textmodes/sgml-mode.el (sgml-point-entered): Use condition-case.
+
+2007-05-27 Tetsurou Okazaki <okazaki@be.to> (tiny change)
+
+ * log-edit.el (log-edit-changelog-paragraph): Return point-max
+ as the end of the ChangeLog paragraph when it ends without a line
+ termination.
+
+2007-05-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * textmodes/fill.el (canonically-space-region): Make the second arg
+ a marker if it's not already the case.
+
+ * xt-mouse.el (xterm-mouse-truncate-wrap): New function.
+ (xterm-mouse-event): Use it.
+
+2007-05-25 Miles Bader <miles@fencepost.gnu.org>
+
+ * vc-hooks.el (vc-find-root): Fix file attribute test.
+
+2007-05-24 Richard Stallman <rms@gnu.org>
+
+ * textmodes/flyspell.el (flyspell-correct-word-before-point):
+ Don't let opoint be nil.
+ (flyspell-emacs-popup): Explicit error if no dialogs.
+
+2007-05-23 Eli Zaretskii <eliz@gnu.org>
+
+ * tar-mode.el (tar-file-name-handler): New function.
+ (tar-extract): Bind file-name-handler-alist to it to force
+ find-buffer-file-type-coding-system behave as if the file being
+ extracted existed. Use last-coding-system-used to force
+ buffer-file-coding-system to what decode-coding-region actually
+ used to decode the file.
+
+2007-05-23 Nikolaj Schumacher <n_schumacher@web.de> (tiny change)
+
+ * progmodes/compile.el (compilation-handle-exit):
+ `compilation-finish-function' may change the current buffer.
+
+2007-05-22 Richard Stallman <rms@gnu.org>
+
+ * files.el (set-auto-mode): Doc fix.
+
+2007-05-22 Eli Zaretskii <eliz@gnu.org>
+
+ * dos-w32.el (find-buffer-file-type-coding-system): Doc fix.
+
+2007-05-21 Trent Buck <trentbuck@gmail.com> (tiny change)
+
+ * net/rcirc.el (rcirc-fill-column): Allow `window-width'.
+ (rcirc-print): Handle `window-width'.
+ (rcirc-buffer-maximum-lines): Doc fix.
+
+2007-05-19 Kevin Ryde <user42@zip.com.au>
+
+ * info.el (Info-fontify-node): Match https also.
+
+2007-05-18 Richard Stallman <rms@gnu.org>
+
+ * simple.el (push-mark): Doc fix.
+
+2007-05-18 Rob Riepel <riepel@Stanford.EDU>
+
+ * emulation/tpu-edt.el (CSI-map, SS3-map): Move from global-map to
+ tpu-global-map.
+ (tpu-original-global-map): Delete variable.
+ (tpu-control-keys-map): New keymap variable.
+ (tpu-set-control-keys): Use tpu-reset-control-keys rather than
+ setting keymapping directly.
+ (tpu-reset-control-keys): Use tpu-control-keys-map instead of
+ tpu-global-map.
+ (tpu-edt-on): Activate the tpu-global-map.
+ (tpu-edt-off): Deactivate the tpu-global-map.
+
+2007-05-18 Ryan Yeske <rcyeske@gmail.com>
+
+ * textmodes/ispell.el (ispell-get-word): Return markers
+ for start and end positions.
+ (ispell-word): Assume END is a marker.
+
+2007-05-17 Vinicius Jose Latorre <viniciusjl@ig.com.br>
+
+ * ps-print.el: Use default color when foreground or background color
+ are unspecified. Reported by Leo <sdl.web@gmail.com>.
+ (ps-print-version): New version 6.7.4.
+ (ps-rgb-color): New argument. Use default color when color is
+ unspecified.
+ (ps-begin-job): Fix code.
+
+2007-05-17 Martin Rudalics <rudalics@gmx.at>
+
+ * textmodes/ispell.el (ispell-start-process): Defend against bad
+ default-directory.
+
+2007-05-17 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * vc-hooks.el (vc-find-root): Stop searching when the user changes.
+
+2007-05-16 Richard Stallman <rms@gnu.org>
+
+ * buff-menu.el (Buffer-menu-sort-column): Doc fix.
+
+2007-05-16 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * files.el (magic-mode-alist, magic-fallback-mode-alist):
+ Move the *ml, Postscript, and XmCD entries to the fallback part.
+
+ * files.el (magic-fallback-mode-alist):
+ Rename from file-start-mode-alist.
+
+2007-05-16 Nikolaj Schumacher <n_schumacher@web.de> (tiny change)
+
+ * progmodes/compile.el (compilation-handle-exit): Quote first
+ argument of `run-hook-with-args'.
+
+2007-05-16 Juanma Barranquero <lekktu@gmail.com>
+
+ * buff-menu.el (Buffer-menu-sort-column):
+ * dabbrev.el (dabbrev-upcase-means-case-search):
+ * dired.el (dired-recursive-deletes, dired-recursive-copies):
+ * info.el (Info-current-subfile):
+ * ls-lisp.el (ls-lisp-verbosity):
+ * msb.el (msb-menu-cond):
+ * pcvs.el (cvs-dired-use-hook):
+ * simple.el (set-mark-command-repeat-pop):
+ * time.el (display-time-24hr-format, display-time-mail-file):
+ Doc fixes.
+
+ * tutorial.el (get-lang-string, tutorial--find-changed-keys):
+ * printing.el (pr-ps-fast-fire): Fix typos in docstrings.
+
+ * view.el (view-inhibit-help-message): Fix typo in docstring.
+ (view-scroll-auto-exit, view-try-extend-at-buffer-end): Doc fixes.
+
+2007-05-14 Eli Zaretskii <eliz@gnu.org>
+
+ * mail/rmail.el (rmail-convert-to-babyl-format):
+ Check content-transfer-encoding _last_, because we need its position
+ in base64-header-field-end.
+
+2007-05-14 Juanma Barranquero <lekktu@gmail.com>
+
+ * files.el (mode-require-final-newline, require-final-newline)
+ (enable-local-variables, enable-local-eval): Doc fixes.
+
+2007-05-10 Edward O'Connor <hober0@gmail.com> (tiny change)
+
+ * progmodes/python.el (python-font-lock-keywords)
+ (python-open-block-statement-p, python-mode): Add support for the new
+ "with" keyword.
+
+2007-05-10 Richard Stallman <rms@gnu.org>
+
+ * international/iso-cvt.el (iso-cvt-read-only): Ignore arguments.
+ (iso-cvt-write-only): Likewise.
+
+ * emacs-lisp/easy-mmode.el (define-minor-mode):
+ Fix generated doc string.
+
+ * startup.el (fancy-splash-text): Add URL of guided tour.
+ Adjust horizontal and vertical whitespace.
+
+ * progmodes/compile.el (compilation-handle-exit):
+ Use run-hook-with-args to run compilation-finish-functions.
+
+ * files.el (file-start-mode-alist): New variable.
+ (magic-mode-regexp-match-limit): Doc fix.
+ (set-auto-mode): Handle file-start-mode-alist.
+ A little cleanup of structure.
+
+2007-05-10 Davis Herring <herring@lanl.gov>
+
+ * calendar/timeclock.el (timeclock-in): Fix non-interactive
+ workday specifications.
+ (timeclock-log): Don't kill the log buffer if it already existed.
+
+2007-05-08 Richard Stallman <rms@gnu.org>
+
+ * mail/mailabbrev.el (sendmail-pre-abbrev-expand-hook):
+ Don't include non-self-insert commands in the exception for `-'.
+
+2007-05-08 David Reitter <david.reitter@gmail.com>
+
+ * progmodes/python.el (python-guess-indent): Check non-nullness
+ before comparing indent against the 2..8 interval.
+
+2007-05-07 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * term/mac-win.el (mac-ts-unicode-for-key-event): Check if text is
+ available.
+
+2007-05-06 Richard Stallman <rms@gnu.org>
+
+ * emacs-lisp/eldoc.el (turn-on-eldoc-mode): Doc fix.
+
+2007-05-03 Ryan Yeske <rcyeske@gmail.com>
+
+ * net/rcirc.el (rcirc-timeout-seconds): Increase to prevent unwanted
+ disconnections.
+
+2007-05-01 Romain Francoise <romain@orebokech.com>
+
+ * dired-x.el: Revert 2007-04-06 change.
+
+2007-04-30 Nick Roberts <nickrob@snap.net.nz>
+
+ * progmodes/gud.el (gud-menu-map): Pdb can't handle SIGINT so
+ don't put stop on toolbar.
+
+2007-04-29 Stephen Berman <Stephen.Berman@gmx.net>
+
+ * find-dired.el (find-dired-filter): Propertize all text down to eob.
+
+2007-04-29 Richard Stallman <rms@gnu.org>
+
+ * international/mule.el (auto-coding-alist): Add pdf => no-conversion.
+
+2007-04-28 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/cc-mode.el (c-before-change): Use point-min rather
+ than 1.
+
+2007-04-28 Richard Stallman <rms@gnu.org>
+
+ * progmodes/sh-script.el (sh-mode): Recognize .profile as sh style.
+
+2007-04-28 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * vc-hooks.el (vc-ignore-dir-regexp): Add /.../ for the DFS filesystem.
+
+2007-04-28 Eli Zaretskii <eliz@gnu.org>
+
+ * makefile.w32-in ($(lisp)/mh-e/mh-loaddefs.el): Use ./mh-e
+ instead of $(lisp)/mh-e.
+
+ * textmodes/fill.el (fill-paragraph): Doc fix.
+
+2007-04-28 Glenn Morris <rgm@gnu.org>
+
+ * image-dired.el (image-dired-cmd-create-thumbnail-options)
+ (image-dired-cmd-create-temp-image-options): Replace option
+ +profile "*" with -strip.
+
+2007-04-27 Chong Yidong <cyd@stupidchicken.com>
+
+ * textmodes/flyspell.el (flyspell-auto-correct-previous-word):
+ Use window-start and window-end.
+
+2007-04-26 Glenn Morris <rgm@gnu.org>
+
+ * progmodes/python.el: Restore file pending consideration of legal
+ status.
+
+2007-04-26 Luc Teirlinck <teirllm@dms.auburn.edu>
+
+ * locate.el (locate-in-alternate-database): Doc fix.
+
+2007-04-26 Glenn Morris <rgm@gnu.org>
+
+ * button.el (button): Use underline if supported, else fall back
+ to color.
+
+2007-04-25 Richard Stallman <rms@gnu.org>
+
+ * hi-lock.el (hi-lock-file-patterns-policy): Default to `ask'.
+
+2007-04-25 J.D. Smith <jdsmith@as.arizona.edu>
+
+ * progmodes/idlwave.el (idlwave-beginning-of-subprogram)
+ (idlwave-end-of-subprogram): Take optional NOMARK arg to prevent
+ pushing mark.
+ (idlwave-current-routine): Don't push mark.
+
+2007-04-25 Mathias Dahl <mathias.dahl@gmail.com>
+
+ * image-dired.el (image-dired-display-image): Derive image-type from
+ filename rather than assuming jpeg, in case no resizing was needed.
+
+2007-04-25 Johan Bockg\e,Ae\e(Brd <bojohan@dd.chalmers.se>
+
+ * custom.el (defface): Doc fix.
+
2007-04-24 Chong Yidong <cyd@stupidchicken.com>
- * progmodes/python.el: File removed due to unclear legal status.
+ * progmodes/python.el: Remove due to unclear legal issues.
2007-04-24 J.D. Smith <jdsmith@as.arizona.edu>
- * progmodes/idlw-shell.el (idlwave-shell-clear-all-bp): Don't
- re-query for each cleared BP.
+ * progmodes/idlw-shell.el (idlwave-shell-clear-all-bp):
+ Don't re-query for each cleared BP.
(idlwave-shell-clear-bp): Optionally skip BP query.
- (idlwave-shell-update-bp-overlays): Use set-window-margins
- instead of set-window-buffer, which incorrectly moves displayed
- region.
+ (idlwave-shell-update-bp-overlays): Use set-window-margins instead
+ of set-window-buffer, which incorrectly moves displayed region.
2007-04-23 Jay Belanger <jay.p.belanger@gmail.com>
2007-04-23 Chong Yidong <cyd@stupidchicken.com>
- * info.el (Info-mouse-scroll-up, Info-mouse-scroll-down): New
- functions.
+ * info.el (Info-mouse-scroll-up, Info-mouse-scroll-down):
+ New functions.
(Info-mode-line-node-keymap): Bind mouse commands to
Info-mouse-scroll-up/down instead of Info-scroll-up/down.
(locate-prompt-for-search-string): New function.
(locate): New optional arg. Make locate-local-prompt
buffer-local. Use locate-prompt-for-search-string.
- (locate-with-filter): New optional arg. Use
- locate-prompt-for-search-string.
+ (locate-with-filter): New optional arg.
+ Use locate-prompt-for-search-string.
(locate-update): Bind locate-prompt-for-command.
2007-04-23 Glenn Morris <rgm@gnu.org>
* progmodes/vhdl-mode.el (vhdl-template-type)
(vhdl-template-record, vhdl-template-nature)
(vhdl-template-configuration-spec, vhdl-template-component-inst)
- (vhdl-template-break, vhdl-regress-line, vhdl-electric-tab): Use
- delete-region instead of kill-word and kill-line.
+ (vhdl-template-break, vhdl-regress-line, vhdl-electric-tab):
+ Use delete-region instead of kill-word and kill-line.
2007-04-21 Johan Bockg\e,Ae\e(Brd <bojohan@dd.chalmers.se>
* international/mule.el (auto-coding-alist): Add .tgz.
-1999-05-2 Eli Zaretskii <eliz@is.elta.co.il>
+1999-05-02 Eli Zaretskii <eliz@is.elta.co.il>
* international/codepage.el (cp-coding-system-for-codepage-1):
Make the magnification parameter for the -dos encoder be 2.
-1999-05-2 Andrew Innes <andrewi@gnu.org>
+1999-05-02 Andrew Innes <andrewi@gnu.org>
* term/w32-win.el (w32-drag-n-drop): Select file in window where
it is dropped, rather than current window.
;; This should get updated & resorted when you click on a column heading
(defvar Buffer-menu-sort-column nil
- "2 for sorting by buffer names. 5 for sorting by file names.
-nil for default sorting by visited order.")
+ "Which column to sort the menu on.
+Use 2 to sort by buffer names, or 5 to sort by file names.
+nil means sort by visited order (the default).")
(defconst Buffer-menu-buffer-column 4)
;; Globals
;; Use color for the MS-DOS port because it doesn't support underline.
-;; Also for the linux console.
+;; FIXME if MS-DOS correctly answers the (supports) question, it need
+;; no longer be a special case.
(defface button '((((type pc) (class color))
(:foreground "lightblue"))
- (((type tty)) (:inherit link))
- (t :underline t))
+ (((supports :underline t)) :underline t)
+ (t (:foreground "lightblue")))
"Default face used for buttons."
:group 'basic-faces)
(setq timeclock-discrepancy
(- (or timeclock-discrepancy 0) workday))
(if (not (= workday timeclock-workday))
- (timeclock-log "h" (and (numberp arg)
- (number-to-string arg))))))
+ (timeclock-log "h" (number-to-string
+ (/ workday (if (zerop (% workday (* 60 60)))
+ 60 60.0) 60))))))
(timeclock-log "i" (or project
(and timeclock-get-project-function
(or find-project (interactive-p))
"Log the event CODE to the timeclock log, at the time of call.
If PROJECT is a string, it represents the project which the event is
being logged for. Normally only \"in\" events specify a project."
- (with-current-buffer (find-file-noselect timeclock-file)
- (goto-char (point-max))
- (if (not (bolp))
- (insert "\n"))
- (let ((now (current-time)))
- (insert code " "
- (format-time-string "%Y/%m/%d %H:%M:%S" now)
- (or (and project
- (stringp project)
- (> (length project) 0)
- (concat " " project))
- "")
- "\n")
- (if (equal (downcase code) "o")
- (setq timeclock-last-period
- (- (timeclock-time-to-seconds now)
- (timeclock-time-to-seconds
- (cadr timeclock-last-event)))
- timeclock-discrepancy
- (+ timeclock-discrepancy
- timeclock-last-period)))
- (setq timeclock-last-event (list code now project)))
- (save-buffer)
- (run-hooks 'timeclock-event-hook)
- (kill-buffer (current-buffer))))
+ (let ((extant-timelog (find-buffer-visiting timeclock-file)))
+ (with-current-buffer (find-file-noselect timeclock-file)
+ (save-excursion
+ (save-restriction
+ (widen)
+ (goto-char (point-max))
+ (if (not (bolp))
+ (insert "\n"))
+ (let ((now (current-time)))
+ (insert code " "
+ (format-time-string "%Y/%m/%d %H:%M:%S" now)
+ (or (and project
+ (stringp project)
+ (> (length project) 0)
+ (concat " " project))
+ "")
+ "\n")
+ (if (equal (downcase code) "o")
+ (setq timeclock-last-period
+ (- (timeclock-time-to-seconds now)
+ (timeclock-time-to-seconds
+ (cadr timeclock-last-event)))
+ timeclock-discrepancy
+ (+ timeclock-discrepancy
+ timeclock-last-period)))
+ (setq timeclock-last-event (list code now project)))))
+ (save-buffer)
+ (run-hooks 'timeclock-event-hook)
+ (unless extant-timelog (kill-buffer (current-buffer))))))
(defvar timeclock-moment-regexp
(concat "\\([bhioO]\\)\\s-+"
(put 'vhdl-compile 'custom-loads '(vhdl-mode))
(put 'ebrowse-tree 'custom-loads '(ebrowse))
(put 'flyspell 'custom-loads '(flyspell))
+(put 'python 'custom-loads '(python))
(put 'recentf-filters 'custom-loads '(recentf))
(put 'ange-ftp 'custom-loads '(ange-ftp))
(put 'erc-pcomplete 'custom-loads '(erc-pcomplete))
(put 'gnus-thread 'custom-loads '(gnus-sum gnus-group))
(put 'org-progress 'custom-loads '(org))
(put 'pop3 'custom-loads '(pop3))
-(put 'languages 'custom-loads '(ps-mode ada-mode antlr-mode asm-mode cus-edit cfengine cperl-mode dcl-mode delphi f90 fortran hideshow icon idlwave info-look ld-script m4-mode meta-mode modula2 octave-mod pascal perl-mode prolog sgml-mode sh-script sieve simula tcl vhdl-mode))
+(put 'languages 'custom-loads '(ps-mode ada-mode antlr-mode asm-mode cus-edit cfengine cperl-mode dcl-mode delphi f90 fortran hideshow icon idlwave info-look ld-script m4-mode meta-mode modula2 octave-mod pascal perl-mode prolog python sgml-mode sh-script sieve simula tcl vhdl-mode))
(put 'reftex-miscellaneous-configurations 'custom-loads '(reftex-vars))
(put 'pong 'custom-loads '(pong))
(put 'ediff-ptch 'custom-loads '(ediff-ptch))
(custom-put-if-not 'ebnf-terminal 'group-documentation "Terminal customization.")
(custom-put-if-not 'ebnf-terminal 'custom-tag "Terminal")
(custom-put-if-not 'nndiary 'custom-version "22.1")
-(custom-put-if-not 'nndiary 'group-documentation "The Gnus Diary backend.")
+(custom-put-if-not 'nndiary 'group-documentation "The Gnus Diary back end.")
(custom-put-if-not 'ps-print-page 'custom-version "20")
(custom-put-if-not 'ps-print-page 'group-documentation "Page customization.")
(custom-put-if-not 'ps-print-page 'custom-tag "Page")
(custom-put-if-not 'elide-head 'group-documentation "Eliding copyright headers and the like in source files.")
(custom-put-if-not 'master 'custom-version "22.1")
(custom-put-if-not 'master 'group-documentation "Support for master/slave relationships between buffers.")
+(custom-put-if-not 'python 'custom-version "22.1")
+(custom-put-if-not 'python 'group-documentation "Silly walks in the Python language.")
(custom-put-if-not 'ebnf-shape 'custom-version "20")
(custom-put-if-not 'ebnf-shape 'group-documentation "Shapes customization.")
(custom-put-if-not 'ebnf-shape 'custom-tag "Shape")
(custom-put-if-not 'ps-print-color 'group-documentation "Color customization.")
(custom-put-if-not 'ps-print-color 'custom-tag "Color")
(custom-put-if-not 'gnus-diary 'custom-version "22.1")
-(custom-put-if-not 'gnus-diary 'group-documentation "Utilities on top of the nndiary backend for Gnus.")
+(custom-put-if-not 'gnus-diary 'group-documentation "Utilities on top of the nndiary back end for Gnus.")
(custom-put-if-not 'ebnf-optimization 'custom-version "20")
(custom-put-if-not 'ebnf-optimization 'group-documentation "Optimization customization.")
(custom-put-if-not 'ebnf-optimization 'custom-tag "Optimization")
SPEC should be an alist of the form ((DISPLAY ATTS)...).
-In the first element, DISPLAY can be :default. The ATTS in that
+In the first element, DISPLAY can be `default'. The ATTS in that
element then act as defaults for all the following elements.
Aside from that, DISPLAY specifies conditions to match some or
elements are ignored, on that frame.
In the last element, DISPLAY can be t. That element applies to a
-frame if none of the previous elements (except the :default if
+frame if none of the previous elements (except the `default' if
any) did.
ATTS is a list of face attributes followed by their values:
`:slant', `:underline', `:overline', `:strike-through', `:box',
`:foreground', `:background', `:stipple', `:inverse-video', and `:inherit'.
-DISPLAY can be `:default' (only in the first element), the symbol
+DISPLAY can be `default' (only in the first element), the symbol
t (only in the last element) to match all frames, or an alist of
conditions of the form \(REQ ITEM...). For such an alist to
match a frame, each of the conditions must be satisfied, meaning
(defcustom dabbrev-upcase-means-case-search nil
"*The significance of an uppercase character in an abbreviation.
-nil means case fold search when searching for possible expansions;
+A nil value means case fold search when searching for possible expansions;
non-nil means case sensitive search.
This variable has an effect only when the value of
;; (add-hook 'dired-load-hook
;; (function (lambda ()
;; (load "dired-x")
-;; ;; Set variables here. For example:
+;; ;; Set global variables here. For example:
;; ;; (setq dired-guess-shell-gnutar "gtar")
+;; )))
+;; (add-hook 'dired-mode-hook
+;; (function (lambda ()
+;; ;; Set buffer-local variables here. For example:
;; ;; (dired-omit-mode 1)
;; )))
;;
:group 'dired-x
:type '(alist :key-type regexp :value-type (repeat sexp)))
+(defcustom dired-guess-shell-case-fold-search t
+ "If non-nil, `dired-guess-shell-alist-default' and
+`dired-guess-shell-alist-user' are matched case-insensitively."
+ :group 'dired-x
+ :type 'boolean)
+
(defun dired-guess-default (files)
"Guess a shell commands for FILES. Return command or list of commands.
See `dired-guess-shell-alist-user'."
- (let* ((case-fold-search t)
+ (let* ((case-fold-search dired-guess-shell-case-fold-search)
;; Prepend the user's alist to the default alist.
(alist (append dired-guess-shell-alist-user
dired-guess-shell-alist-default))
(define-key map
[menu-bar regexp image-dired-mark-tagged-files]
'(menu-item "Mark From Image Tag..." image-dired-mark-tagged-files
- :help "Mark files whose image tags matches regexp"))
-
+ :help "Mark files whose image tags matches regexp"))
+
(define-key map [menu-bar regexp dashes-1]
- '("--"))
+ '("--"))
(define-key map [menu-bar regexp downcase]
'(menu-item "Downcase" dired-downcase
[menu-bar operate image-dired-display-thumbs]
'(menu-item "Display Image-Dired" image-dired-display-thumbs
:help "Display image-dired for current or marked image files"))
-
+
(define-key map [menu-bar operate dashes-3]
- '("--"))
+ '("--"))
(define-key map [menu-bar operate query-replace]
'(menu-item "Query Replace in Files..." dired-do-query-replace-regexp
(defcustom dired-recursive-deletes nil ; Default only delete empty directories.
"*Decide whether recursive deletes are allowed.
-nil means no recursive deletes.
+A value of nil means no recursive deletes.
`always' means delete recursively without asking. This is DANGEROUS!
`top' means ask for each directory at top level, but delete its subdirectories
without asking.
(defun dired-do-flagged-delete (&optional nomessage)
"In Dired, delete the files flagged for deletion.
If NOMESSAGE is non-nil, we don't display any message
-if there are no flagged files."
+if there are no flagged files.
+`dired-recursive-deletes' controls whether
+deletion of non-empty directories is allowed."
(interactive)
(let* ((dired-marker-char dired-del-marker)
(regexp (dired-marker-regexp))
(message "(No deletions requested)")))))
(defun dired-do-delete (&optional arg)
- "Delete all marked (or next ARG) files."
+ "Delete all marked (or next ARG) files.
+`dired-recursive-deletes' controls whether
+deletion of non-empty directories is allowed."
;; This is more consistent with the file marking feature than
;; dired-do-flagged-delete.
(interactive "P")
(when (eq major-mode 'dired-mode)
(setq mode-name
(let (case-fold-search)
- (cond ((string-match
+ (cond ((string-match
dired-sort-by-name-regexp dired-actual-switches)
"Dired by name")
((string-match
(defcustom dired-recursive-copies nil
"*Decide whether recursive copies are allowed.
-nil means no recursive copies.
+A value of nil means no recursive copies.
`always' means copy recursively without asking.
`top' means ask for each directory at top level.
Anything else means ask for each directory."
(defun find-buffer-file-type-coding-system (command)
"Choose a coding system for a file operation in COMMAND.
-COMMAND is a list that specifies the operation, and I/O primitive as its
+COMMAND is a list that specifies the operation, an I/O primitive, as its
CAR, and the arguments that might be given to that operation as its CDR.
If operation is `insert-file-contents', the coding system is chosen based
upon the filename (the CAR of the arguments beyond the operation), the contents
If the file exists: `undecided'
If the file does not exist: default-buffer-file-coding-system
+Note that the CAR of arguments to `insert-file-contents' operation could
+be a cons cell of the form \(FILENAME . BUFFER\), where BUFFER is a buffer
+into which the file's contents were already read, but not yet decoded.
+
If operation is `write-region', the coding system is chosen based upon
the value of `buffer-file-coding-system' and `buffer-file-type'. If
`buffer-file-coding-system' is non-nil, its value is used. If it is
(let ((base-doc-string
(concat "Non-nil if %s is enabled.
-See the command `%s' for a description of this minor-mode."
+See the command `%s' for a description of this minor mode."
(if body "
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
;;;###autoload
(defun turn-on-eldoc-mode ()
- "Unequivocally turn on eldoc-mode (see variable documentation)."
+ "Unequivocally turn on ElDoc mode (see command `eldoc-mode')."
(interactive)
(eldoc-mode 1))
matches the empty string, but only at point.
`word-start', `bow'
- matches the empty string, but only at the beginning or end of a
- word.
+ matches the empty string, but only at the beginning of a word.
`word-end', `eow'
matches the empty string, but only at the end of a word.
matches the empty string, but not at the beginning or end of a
word.
+`symbol-start'
+ matches the empty string, but only at the beginning of a symbol.
+
+`symbol-end'
+ matches the empty string, but only at the end of a symbol.
+
`digit', `numeric', `num'
matches 0 through 9.
"Maps the SS3 function keys on the VT100 keyboard.
SS3 is DEC's name for the sequence <ESC>O.")
-(defvar tpu-global-map nil "TPU-edt global keymap.")
-(defvar tpu-original-global-map global-map
- "Original non-TPU global keymap.")
+(defvar tpu-global-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "\e[" CSI-map)
+ (define-key map "\eO" SS3-map)
+ map)
+ "TPU-edt global keymap.")
(and (not (boundp 'minibuffer-local-ns-map))
(defvar minibuffer-local-ns-map (make-sparse-keymap)
;;;
;;; Functions to set, reset, and toggle the control key bindings
;;;
-(defun tpu-set-control-keys nil
+
+(defvar tpu-control-keys-map
+ (let ((map (make-sparse-keymap)))
+ (define-key map "\C-\\" 'quoted-insert) ; ^\
+ (define-key map "\C-a" 'tpu-toggle-overwrite-mode) ; ^A
+ (define-key map "\C-b" 'repeat-complex-command) ; ^B
+ (define-key map "\C-e" 'tpu-current-end-of-line) ; ^E
+ (define-key map "\C-h" 'tpu-next-beginning-of-line) ; ^H (BS)
+ (define-key map "\C-j" 'tpu-delete-previous-word) ; ^J (LF)
+ (define-key map "\C-k" 'tpu-define-macro-key) ; ^K
+ (define-key map "\C-l" 'tpu-insert-formfeed) ; ^L (FF)
+ (define-key map "\C-r" 'recenter) ; ^R
+ (define-key map "\C-u" 'tpu-delete-to-bol) ; ^U
+ (define-key map "\C-v" 'tpu-quoted-insert) ; ^V
+ (define-key map "\C-w" 'redraw-display) ; ^W
+ (define-key map "\C-z" 'tpu-exit) ; ^Z
+ map))
+
+(defun tpu-set-control-keys ()
"Set control keys to TPU style functions."
- (define-key global-map "\C-\\" 'quoted-insert) ; ^\
- (define-key global-map "\C-a" 'tpu-toggle-overwrite-mode) ; ^A
- (define-key global-map "\C-b" 'repeat-complex-command) ; ^B
- (define-key global-map "\C-e" 'tpu-current-end-of-line) ; ^E
- (define-key global-map "\C-h" 'tpu-next-beginning-of-line) ; ^H (BS)
- (define-key global-map "\C-j" 'tpu-delete-previous-word) ; ^J (LF)
- (define-key global-map "\C-k" 'tpu-define-macro-key) ; ^K
- (define-key global-map "\C-l" 'tpu-insert-formfeed) ; ^L (FF)
- (define-key global-map "\C-r" 'recenter) ; ^R
- (define-key global-map "\C-u" 'tpu-delete-to-bol) ; ^U
- (define-key global-map "\C-v" 'tpu-quoted-insert) ; ^V
- (define-key global-map "\C-w" 'redraw-display) ; ^W
- (define-key global-map "\C-z" 'tpu-exit) ; ^Z
- (setq tpu-control-keys t))
+ (tpu-reset-control-keys 'tpu))
(defun tpu-reset-control-keys (tpu-style)
"Set control keys to TPU or Emacs style functions."
- (let* ((tpu (and tpu-style (not tpu-control-keys)))
- (emacs (and (not tpu-style) tpu-control-keys))
- (doit (or tpu emacs)))
- (cond (doit
- (if emacs (setq tpu-global-map (copy-keymap global-map)))
- (let ((map (if tpu tpu-global-map tpu-original-global-map)))
-
- (define-key global-map "\C-\\" (lookup-key map "\C-\\")) ; ^\
- (define-key global-map "\C-a" (lookup-key map "\C-a")) ; ^A
- (define-key global-map "\C-b" (lookup-key map "\C-b")) ; ^B
- (define-key global-map "\C-e" (lookup-key map "\C-e")) ; ^E
- (define-key global-map "\C-h" (lookup-key map "\C-h")) ; ^H (BS)
- (define-key global-map "\C-j" (lookup-key map "\C-j")) ; ^J (LF)
- (define-key global-map "\C-k" (lookup-key map "\C-k")) ; ^K
- (define-key global-map "\C-l" (lookup-key map "\C-l")) ; ^L (FF)
- (define-key global-map "\C-r" (lookup-key map "\C-r")) ; ^R
- (define-key global-map "\C-u" (lookup-key map "\C-u")) ; ^U
- (define-key global-map "\C-v" (lookup-key map "\C-v")) ; ^V
- (define-key global-map "\C-w" (lookup-key map "\C-w")) ; ^W
- (define-key global-map "\C-z" (lookup-key map "\C-z")) ; ^Z
- (setq tpu-control-keys tpu-style))))))
+ (let ((parent (keymap-parent tpu-global-map)))
+ (if tpu-style
+ (if (eq parent tpu-control-keys-map)
+ nil ;All done already.
+ ;; Insert tpu-control-keys-map in the global map.
+ (set-keymap-parent tpu-control-keys-map parent)
+ (set-keymap-parent tpu-global-map tpu-control-keys-map))
+ (if (not (eq parent tpu-control-keys-map))
+ nil ;All done already.
+ ;; Remove tpu-control-keys-map from the global map.
+ (set-keymap-parent tpu-global-map (keymap-parent parent))
+ (set-keymap-parent tpu-control-keys-map nil)))
+ (setq tpu-control-keys tpu-style)))
(defun tpu-toggle-control-keys nil
"Toggles control key bindings between TPU-edt and Emacs."
(defun tpu-edt-on ()
"Turn on TPU/edt emulation."
(interactive)
- (and window-system (tpu-load-xkeys nil))
- (tpu-arrow-history)
+ ;; First, activate tpu-global-map, while protecting the original keymap.
+ (set-keymap-parent tpu-global-map global-map)
+ (setq global-map tpu-global-map)
+ (use-global-map global-map)
+ ;; Then do the normal TPU setup.
(transient-mark-mode t)
(add-hook 'post-command-hook 'tpu-search-highlight)
(tpu-set-mode-line t)
(setq-default page-delimiter "\f")
(setq-default truncate-lines t)
(setq scroll-step 1)
- (setq global-map (copy-keymap global-map))
(tpu-set-control-keys)
- (define-key global-map "\e[" CSI-map)
- (define-key global-map "\eO" SS3-map)
+ (and window-system (tpu-load-xkeys nil))
+ (tpu-arrow-history)
+ ;; Then protect tpu-global-map from user modifications.
+ (let ((map (make-sparse-keymap)))
+ (set-keymap-parent map global-map)
+ (setq global-map map)
+ (use-global-map map))
(setq tpu-edt-mode t))
(defun tpu-edt-off ()
(setq-default page-delimiter "^\f")
(setq-default truncate-lines nil)
(setq scroll-step 0)
- (setq global-map tpu-original-global-map)
- (use-global-map global-map)
+ ;; Remove tpu-global-map from the global map.
+ (let ((map global-map))
+ (while map
+ (let ((parent (keymap-parent map)))
+ (if (eq tpu-global-map parent)
+ (set-keymap-parent map (keymap-parent parent))
+ (setq map parent)))))
(setq tpu-edt-mode nil))
(provide 'tpu-edt)
A value of `visit' means do this right after the file is visited.
A value of `visit-save' means do it at both of those times.
Any other non-nil value means ask user whether to add a newline, when saving.
-nil means don't add newlines.
+A value of nil means don't add newlines.
Certain major modes set this locally to the value obtained
from `mode-require-final-newline'."
A value of `visit-save' means do it at both of those times.
Any other non-nil value means ask user whether to add a newline, when saving.
-nil means do not add newlines. That is a risky choice in this variable
-since this value is used for modes for files that ought to have final newlines.
-So if you set this to nil, you must explicitly check and add
-a final newline, whenever you save a file that really needs one."
+A value of nil means do not add newlines. That is a risky choice in this
+variable since this value is used for modes for files that ought to have
+final newlines. So if you set this to nil, you must explicitly check and
+add a final newline, whenever you save a file that really needs one."
:type '(choice (const :tag "When visiting" visit)
(const :tag "When saving" t)
(const :tag "When visiting or saving" visit-save)
:safe means set the safe variables, and ignore the rest.
:all means set all variables, whether safe or not.
(Don't set it permanently to :all.)
-nil means always ignore the file local variables.
+A value of nil means always ignore the file local variables.
Any other value means always query you once whether to set them all.
\(When you say yes to certain values, they are remembered as safe, but
"Control processing of the \"variable\" `eval' in a file's local variables.
The value can be t, nil or something else.
A value of t means obey `eval' variables;
-nil means ignore them; anything else means query."
+A value of nil means ignore them; anything else means query."
:type '(choice (const :tag "Obey" t)
(const :tag "Ignore" nil)
(other :tag "Query" other))
associated with that interpreter in `interpreter-mode-alist'.")
(defvar magic-mode-alist
- `((image-type-auto-detected-p . image-mode)
- ;; The < comes before the groups (but the first) to reduce backtracking.
+ `((image-type-auto-detected-p . image-mode))
+ "Alist of buffer beginnings vs. corresponding major mode functions.
+Each element looks like (REGEXP . FUNCTION) or (MATCH-FUNCTION . FUNCTION).
+After visiting a file, if REGEXP matches the text at the beginning of the
+buffer, or calling MATCH-FUNCTION returns non-nil, `normal-mode' will
+call FUNCTION rather than allowing `auto-mode-alist' to decide the buffer's
+major mode.
+
+If FUNCTION is nil, then it is not called. (That is a way of saying
+\"allow `auto-mode-alist' to decide for these files.\")")
+(put 'magic-mode-alist 'risky-local-variable t)
+
+(defvar magic-fallback-mode-alist
+ `(;; The < comes before the groups (but the first) to reduce backtracking.
;; TODO: UTF-16 <?xml may be preceded by a BOM 0xff 0xfe or 0xfe 0xff.
;; We use [ \t\r\n] instead of `\\s ' to make regex overflow less likely.
(,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)")
. sgml-mode)
("%!PS" . ps-mode)
("# xmcd " . conf-unix-mode))
- "Alist of buffer beginnings vs. corresponding major mode functions.
+ "Like `magic-mode-alist' but has lower priority than `auto-mode-alist'.
Each element looks like (REGEXP . FUNCTION) or (MATCH-FUNCTION . FUNCTION).
After visiting a file, if REGEXP matches the text at the beginning of the
buffer, or calling MATCH-FUNCTION returns non-nil, `normal-mode' will
-call FUNCTION rather than allowing `auto-mode-alist' to decide the buffer's
-major mode.
+call FUNCTION, provided that `magic-mode-alist' and `auto-mode-alist'
+have not specified a mode for this file.
-If FUNCTION is nil, then it is not called. (That is a way of saying
-\"allow `auto-mode-alist' to decide for these files.\")")
-(put 'magic-mode-alist 'risky-local-variable t)
+If FUNCTION is nil, then it is not called.")
+(put 'magic-fallback-mode-alist 'risky-local-variable t)
(defvar magic-mode-regexp-match-limit 4000
- "Upper limit on `magic-mode-alist' regexp matches.")
+ "Upper limit on `magic-mode-alist' regexp matches.
+Also applies to `magic-fallback-mode-alist'.")
(defun set-auto-mode (&optional keep-mode-if-same)
"Select major mode appropriate for current buffer.
-This checks for a -*- mode tag in the buffer's text, checks the
-interpreter that runs this file against `interpreter-mode-alist',
-compares the buffer beginning against `magic-mode-alist', or
-compares the filename against the entries in `auto-mode-alist'.
+To find the right major mode, this function checks for a -*- mode tag,
+checks if it uses an interpreter listed in `interpreter-mode-alist',
+matches the buffer beginning against `magic-mode-alist',
+compares the filename against the entries in `auto-mode-alist',
+then matches the buffer beginning against `magic-fallback-mode-alist'.
It does not check for the `mode:' local variable in the
Local Variables section of the file; for that, use `hack-local-variables'.
-*- mode tag.
If the optional argument KEEP-MODE-IF-SAME is non-nil, then we
-only set the major mode, if that would change it."
+set the major mode only if that would change it. In other words
+we don't actually set it to the same mode the buffer already has."
;; Look for -*-MODENAME-*- or -*- ... mode: MODENAME; ... -*-
(let (end done mode modes)
;; Find a -*- mode tag
(or (set-auto-mode-0 mode keep-mode-if-same)
;; continuing would call minor modes again, toggling them off
(throw 'nop nil))))))
+ ;; If we didn't, look for an interpreter specified in the first line.
+ ;; As a special case, allow for things like "#!/bin/env perl", which
+ ;; finds the interpreter anywhere in $PATH.
(unless done
- ;; If we didn't, look for an interpreter specified in the first line.
- ;; As a special case, allow for things like "#!/bin/env perl", which
- ;; finds the interpreter anywhere in $PATH.
(setq mode (save-excursion
(goto-char (point-min))
(if (looking-at auto-mode-interpreter-regexp)
;; If we found an interpreter mode to use, invoke it now.
(if done
(set-auto-mode-0 (cdr done) keep-mode-if-same)))
- ;; If we didn't, match the buffer beginning against magic-mode-alist.
+ ;; Next try matching the buffer beginning against magic-mode-alist.
(unless done
(if (setq done (save-excursion
(goto-char (point-min))
(if (functionp re)
(funcall re)
(looking-at re)))))))
- (set-auto-mode-0 done keep-mode-if-same)
- ;; Compare the filename against the entries in auto-mode-alist.
- (if buffer-file-name
- (let ((name buffer-file-name))
- ;; Remove backup-suffixes from file name.
- (setq name (file-name-sans-versions name))
- (while name
- ;; Find first matching alist entry.
- (setq mode
- (if (memq system-type '(vax-vms windows-nt cygwin))
- ;; System is case-insensitive.
- (let ((case-fold-search t))
- (assoc-default name auto-mode-alist
- 'string-match))
- ;; System is case-sensitive.
- (or
- ;; First match case-sensitively.
- (let ((case-fold-search nil))
- (assoc-default name auto-mode-alist
- 'string-match))
- ;; Fallback to case-insensitive match.
- (and auto-mode-case-fold
- (let ((case-fold-search t))
- (assoc-default name auto-mode-alist
- 'string-match))))))
- (if (and mode
- (consp mode)
- (cadr mode))
- (setq mode (car mode)
- name (substring name 0 (match-beginning 0)))
- (setq name))
- (when mode
- (set-auto-mode-0 mode keep-mode-if-same)))))))))
+ (set-auto-mode-0 done keep-mode-if-same)))
+ ;; Next compare the filename against the entries in auto-mode-alist.
+ (unless done
+ (if buffer-file-name
+ (let ((name buffer-file-name))
+ ;; Remove backup-suffixes from file name.
+ (setq name (file-name-sans-versions name))
+ (while name
+ ;; Find first matching alist entry.
+ (setq mode
+ (if (memq system-type '(vax-vms windows-nt cygwin))
+ ;; System is case-insensitive.
+ (let ((case-fold-search t))
+ (assoc-default name auto-mode-alist
+ 'string-match))
+ ;; System is case-sensitive.
+ (or
+ ;; First match case-sensitively.
+ (let ((case-fold-search nil))
+ (assoc-default name auto-mode-alist
+ 'string-match))
+ ;; Fallback to case-insensitive match.
+ (and auto-mode-case-fold
+ (let ((case-fold-search t))
+ (assoc-default name auto-mode-alist
+ 'string-match))))))
+ (if (and mode
+ (consp mode)
+ (cadr mode))
+ (setq mode (car mode)
+ name (substring name 0 (match-beginning 0)))
+ (setq name))
+ (when mode
+ (set-auto-mode-0 mode keep-mode-if-same)
+ (setq done t))))))
+ ;; Next try matching the buffer beginning against magic-fallback-mode-alist.
+ (unless done
+ (if (setq done (save-excursion
+ (goto-char (point-min))
+ (save-restriction
+ (narrow-to-region (point-min)
+ (min (point-max)
+ (+ (point-min) magic-mode-regexp-match-limit)))
+ (assoc-default nil magic-fallback-mode-alist
+ (lambda (re dummy)
+ (if (functionp re)
+ (funcall re)
+ (looking-at re)))))))
+ (set-auto-mode-0 done keep-mode-if-same)))))
;; When `keep-mode-if-same' is set, we are working on behalf of
;; set-visited-file-name. In that case, if the major mode specified is the
(delete-region (point) (- (point) 2)))
;; Find all the complete lines in the unprocessed
;; output and process it to add text properties.
- (goto-char end)
+ (goto-char (point-max))
(if (search-backward "\n" (process-mark proc) t)
(progn
(dired-insert-set-properties (process-mark proc)
"daemonic Gnus behaviour"
(news))
("gnus-diary.el"
- "Wrapper around the NNDiary Gnus backend"
+ "Wrapper around the NNDiary Gnus back end"
(calendar mail news))
("gnus-dired.el"
"utility functions where gnus and dired meet"
"nndb access for Gnus"
(news))
("nndiary.el"
- "A diary backend for Gnus"
+ "A diary back end for Gnus"
(calendar mail news))
("nndir.el"
"single directory newsgroup access for Gnus"
("ps-mode.el"
"PostScript mode for GNU Emacs"
(postscript languages))
+ ("python.el"
+ "silly walks for Python"
+ (languages))
("scheme.el"
"Scheme (and DSSSL) editing mode"
(languages lisp))
+2007-05-28 Katsumi Yamaoka <yamaoka@jpl.org>
+
+ * message.el (message-pop-to-buffer): Add switch-function argument.
+ (message-mail): Pass switch-function argument to it.
+ (message-narrow-to-headers-or-head): Ignore mail-header-separator in
+ the body.
+
+2007-05-09 Didier Verna <didier@xemacs.org>
+
+ * gnus-diary.el, nndiary.el: Remove the description comment (nndiary is
+ now properly documented in the Gnus manual). Fix the spelling of "Back
+ End".
+
2007-04-19 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-art.el (gnus-mime-strip-charset-parameters): New function.
-;;; gnus-diary.el --- Wrapper around the NNDiary Gnus backend
+;;; gnus-diary.el --- Wrapper around the NNDiary Gnus back end
;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
;; 2006, 2007 Free Software Foundation, Inc.
;; Description:
;; ===========
-;; Gnus-Diary is a wrapper around the NNDiary Gnus backend. It is here to
-;; make your nndiary-user life easier in different ways. So, you don't have
-;; to use it if you don't want to. But, really, you should.
-
-;; Gnus-Diary offers the following features on top of the NNDiary backend:
-
-;; - A nice summary line format:
-;; Displaying diary messages in standard summary line format (usually
-;; something like "<From Joe>: <Subject>") is pretty useless. Most of the
-;; time, you're the one who wrote the message, and you mostly want to see
-;; the event's date. Gnus-Diary offers you a nice summary line format
-;; which will do this. By default, a summary line will appear like this:
-;;
-;; <Event Date>: <Subject> <Remaining time>
-;;
-;; for example, here's how Joe's birthday is displayed in my
-;; "nndiary:birhdays" summary buffer (the message is expirable, but will
-;; never be deleted, as it specifies a regular event):
-;;
-;; E Sat, Sep 22 01, 12:00: Joe's birthday (in 6 months, 1 week)
-
-;; - More article sorting functions:
-;; Gnus-Diary adds a new sorting function called
-;; `gnus-summary-sort-by-schedule'. This function lets you organize your
-;; diary summary buffers from the closest event to the farthest one.
-
-;; - Automatic generation of diary group parameters:
-;; When you create a new diary group, or visit one, Gnus-Diary checks your
-;; group parameters, and if needed, sets the summary line format to the
-;; diary-specific value, adds the diary-specific sorting functions, and
-;; also adds the different `X-Diary-*' headers to the group's
-;; posting-style. It is then easier to send a diary message, because if
-;; you use `C-u a' or `C-u m' on a diary group to prepare a message, these
-;; headers will be inserted automatically (but not filled with proper
-;; values yet).
-
-;; - An interactive mail-to-diary convertion function:
-;; The function `gnus-diary-check-message' ensures that the current message
-;; contains all the required diary headers, and prompts you for values /
-;; correction if needed. This function is hooked in the nndiary backend so
-;; that moving an article to an nndiary group will trigger it
-;; automatically. It is also bound to `C-c D c' in message-mode and
-;; article-edit-mode in order to ease the process of converting a usual
-;; mail to a diary one. This function takes a prefix argument which will
-;; force prompting of all diary headers, regardless of their
-;; presence/validity. That way, you can very easily reschedule a diary
-;; message for instance.
-
-
-;; Usage:
-;; =====
-
-;; 0/ Don't use any `gnus-user-format-function-[d|D]'. Gnus-Diary provides
-;; both of these (sorry if you used them before).
-;; 1/ Add '(require 'gnus-diary) to your gnusrc file.
-;; 2/ Customize your gnus-diary options to suit your needs.
-
+;; gnus-diary is a utility toolkit used on top of the nndiary back end. It is
+;; now fully documented in the Gnus manual.
;; Bugs / Todo:
(require 'gnus-art)
(defgroup gnus-diary nil
- "Utilities on top of the nndiary backend for Gnus."
+ "Utilities on top of the nndiary back end for Gnus."
:version "22.1"
:group 'gnus)
:group 'gnus-diary)
(defconst gnus-diary-version nndiary-version
- "Current Diary backend version.")
+ "Current Diary back end version.")
;; Compatibility functions ==================================================
))
;; Called when a group is subscribed. This is needed because groups created
-;; because of mail splitting are *not* created with the backend function.
+;; because of mail splitting are *not* created with the back end function.
;; Thus, `nndiary-request-create-group-hooks' is inoperative.
(defun gnus-diary-maybe-update-group-parameters (group)
(when (eq (car (gnus-find-method-for-group group)) 'nndiary)
;; The end ==================================================================
(defun gnus-diary-version ()
- "Current Diary backend version."
+ "Current Diary back end version."
(interactive)
(message "NNDiary version %s" nndiary-version))
(widen)
(narrow-to-region
(goto-char (point-min))
- (cond
- ((re-search-forward
- (concat "^" (regexp-quote mail-header-separator) "\n") nil t)
- (match-beginning 0))
- ((search-forward "\n\n" nil t)
- (1- (point)))
- (t
- (point-max))))
+ (if (re-search-forward (concat "\\(\n\\)\n\\|^\\("
+ (regexp-quote mail-header-separator)
+ "\n\\)")
+ nil t)
+ (or (match-end 1) (match-beginning 2))
+ (point-max)))
(goto-char (point-min)))
(defun message-news-p ()
'car-less-than-car)))
new)))))
-(defun message-pop-to-buffer (name)
+(defun message-pop-to-buffer (name &optional switch-function)
"Pop to buffer NAME, and warn if it already exists and is modified."
(let ((buffer (get-buffer name)))
(if (and buffer
(progn
(gnus-select-frame-set-input-focus (window-frame window))
(select-window window))
- (set-buffer (pop-to-buffer buffer)))
+ (funcall (or switch-function 'pop-to-buffer) buffer)
+ (set-buffer buffer))
(when (and (buffer-modified-p)
(not (prog1
(y-or-n-p
"Message already being composed; erase? ")
(message nil))))
(error "Message being composed")))
- (set-buffer (pop-to-buffer name)))
+ (funcall (or switch-function 'pop-to-buffer) name)
+ (set-buffer name))
(erase-buffer)
(message-mode)))
(interactive)
(let ((message-this-is-mail t) replybuffer)
(unless (message-mail-user-agent)
- (funcall
- (or switch-function 'message-pop-to-buffer)
+ (message-pop-to-buffer
;; Search for the existing message buffer if `continue' is non-nil.
(let ((message-generate-new-buffers
(when (or (not continue)
(eq message-generate-new-buffers 'standard)
(functionp message-generate-new-buffers))
message-generate-new-buffers)))
- (message-buffer-name "mail" to))))
+ (message-buffer-name "mail" to))
+ switch-function))
;; FIXME: message-mail should do something if YANK-ACTION is not
;; insert-buffer.
(and (consp yank-action) (eq (car yank-action) 'insert-buffer)
-;;; nndiary.el --- A diary backend for Gnus
+;;; nndiary.el --- A diary back end for Gnus
;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
;; 2005, 2006, 2007 Free Software Foundation, Inc.
;; Description:
;; ===========
-;; This package implements NNDiary, a diary backend for Gnus. NNDiary is a
-;; mail backend, pretty similar to nnml in its functionnning (it has all the
-;; features of nnml, actually), but in which messages are treated as event
-;; reminders.
-
-;; Here is a typical scenario:
-;; - You've got a date with Andy Mc Dowell or Bruce Willis (select according
-;; to your sexual preference) in one month. You don't want to forget it.
-;; - Send a (special) diary message to yourself (see below).
-;; - Forget all about it and keep on getting and reading new mail, as usual.
-;; - From time to time, as you type `g' in the group buffer and as the date
-;; is getting closer, the message will pop up again, just like if it were
-;; new and unread.
-;; - Read your "new" messages, this one included, and start dreaming of the
-;; night you're gonna have.
-;; - Once the date is over (you actually fell asleep just after dinner), the
-;; message will be automatically deleted if it is marked as expirable.
-
-;; Some more notes on the diary backend:
-;; - NNDiary is a *real* mail backend. You *really* send real diary
-;; messsages. This means for instance that you can give appointements to
-;; anybody (provided they use Gnus and NNDiary) by sending the diary message
-;; to them as well.
-;; - However, since NNDiary also has a 'request-post method, you can also
-;; `C-u a' instead of `C-u m' on a diary group and the message won't actually
-;; be sent; just stored in the group.
-;; - The events you want to remember need not be punctual. You can set up
-;; reminders for regular dates (like once each week, each monday at 13:30
-;; and so on). Diary messages of this kind will never be deleted (unless
-;; you do it explicitely). But that, you guessed.
-
-
-;; Usage:
-;; =====
-
-;; 1/ NNDiary has two modes of operation: traditional (the default) and
-;; autonomous.
-;; a/ In traditional mode, NNDiary does not get new mail by itself. You
-;; have to move mails from your primary mail backend to nndiary
-;; groups.
-;; b/ In autonomous mode, NNDiary retrieves its own mail and handles it
-;; independantly of your primary mail backend. To use NNDiary in
-;; autonomous mode, you have several things to do:
-;; i/ Put (setq nndiary-get-new-mail t) in your gnusrc file.
-;; ii/ Diary messages contain several `X-Diary-*' special headers.
-;; You *must* arrange that these messages be split in a private
-;; folder *before* Gnus treat them. You need this because Gnus
-;; is not able yet to manage multiple backends for mail
-;; retrieval. Getting them from a separate source will
-;; compensate this misfeature to some extent, as we will see.
-;; As an example, here's my procmailrc entry to store diary files
-;; in ~/.nndiary (the default nndiary mail source file):
-;;
-;; :0 HD :
-;; * ^X-Diary
-;; .nndiary
-;; iii/ Customize the variables `nndiary-mail-sources' and
-;; `nndiary-split-methods'. These are replacements for the usual
-;; mail sources and split methods which, and will be used in
-;; autonomous mode. `nndiary-mail-sources' defaults to
-;; '(file :path "~/.nndiary").
-;; 2/ Install nndiary somewhere Emacs / Gnus can find it. Normally, you
-;; *don't* have to '(require 'nndiary) anywhere. Gnus will do so when
-;; appropriate as long as nndiary is somewhere in the load path.
-;; 3/ Now, customize the rest of nndiary. In particular, you should
-;; customize `nndiary-reminders', the list of times when you want to be
-;; reminded of your appointements (e.g. 3 weeks before, then 2 days
-;; before, then 1 hour before and that's it).
-;; 4/ You *must* use the group timestamp feature of Gnus. This adds a
-;; timestamp to each groups' parameters (please refer to the Gnus
-;; documentation ("Group Timestamp" info node) to see how it's done.
-;; 5/ Once you have done this, you may add a permanent nndiary virtual server
-;; (something like '(nndiary "")) to your `gnus-secondary-select-methods'.
-;; Yes, this server will be able to retrieve mails and split them when you
-;; type `g' in the group buffer, just as if it were your only mail backend.
-;; This is the benefit of using a private folder.
-;; 6/ Hopefully, almost everything (see the TODO section below) will work as
-;; expected when you restart Gnus: in the group buffer, `g' and `M-g' will
-;; also get your new diary mails, `F' will find your new diary groups etc.
-
-
-;; How to send diary messages:
-;; ==========================
-
-;; There are 7 special headers in diary messages. These headers are of the
-;; form `X-Diary-<something>', the <something> being one of `Minute', `Hour',
-;; `Dom', `Month', `Year', `Time-Zone' and `Dow'. `Dom' means "Day of Month",
-;; and `dow' means "Day of Week". These headers actually behave like crontab
-;; specifications and define the event date(s).
-
-;; For all headers but the `Time-Zone' one, a header value is either a
-;; star (meaning all possible values), or a list of fields (separated by a
-;; comma). A field is either an integer, or a range. A range is two integers
-;; separated by a dash. Possible integer values are 0-59 for `Minute', 0-23
-;; for `Hour', 1-31 for `Dom', `1-12' for Month, above 1971 for `Year' and 0-6
-;; for `Dow' (0 = sunday). As a special case, a star in either `Dom' or `Dow'
-;; doesn't mean "all possible values", but "use only the other field". Note
-;; that if both are star'ed, the use of either one gives the same result :-),
-
-;; The `Time-Zone' header is special in that it can have only one value (you
-;; bet ;-).
-;; A star doesn't mean "all possible values" (because it has no sense), but
-;; "the current local time zone".
-
-;; As an example, here's how you would say "Each Monday and each 1st of month,
-;; at 12:00, 20:00, 21:00, 22:00, 23:00 and 24:00, from 1999 to 2010" (I let
-;; you find what to do then):
-;;
-;; X-Diary-Minute: 0
-;; X-Diary-Hour: 12, 20-24
-;; X-Diary-Dom: 1
-;; X-Diary-Month: *
-;; X-Diary-Year: 1999-2010
-;; X-Diary-Dow: 1
-;; X-Diary-Time-Zone: *
-;;
-;;
-;; Sending a diary message is not different from sending any other kind of
-;; mail, except that such messages are identified by the presence of these
-;; special headers.
-
+;; nndiary is a mail back end designed to handle mails as diary event
+;; reminders. It is now fully documented in the Gnus manual.
;; Bugs / Todo:
;; * Respooling doesn't work because contrary to the request-scan function,
;; Gnus won't allow me to override the split methods when calling the
-;; respooling backend functions.
+;; respooling back end functions.
;; * There's a bug in the time zone mechanism with variable TZ locations.
;; * We could allow a keyword like `ask' in X-Diary-* headers, that would mean
;; "ask for value upon reception of the message".
;; * We could add an optional header X-Diary-Reminders to specify a special
;; reminders value for this message. Suggested by Jody Klymak.
;; * We should check messages validity in other circumstances than just
-;; moving an article from sonwhere else (request-accept). For instance, when
-;; editing / saving and so on.
+;; moving an article from somewhere else (request-accept). For instance,
+;; when editing / saving and so on.
;; Remarks:
;; =======
-;; * nnoo.
-;; NNDiary is very similar to nnml. This makes the idea of using nnoo (to
-;; derive nndiary from nnml) natural. However, my experience with nnoo is
-;; that for reasonably complex backends like this one, noo is a burden
-;; rather than an help. It's tricky to use, not everything can be
-;; inherited, what can be inherited and when is not very clear, and you've
-;; got to be very careful because a little mistake can fuck up your your
-;; other backends, especially because their variables will be use instead of
-;; your real ones. Finally, I found it easier to just clone the needed
-;; parts of nnml, and tracking nnml updates is not a big deal.
+;; * nnoo. NNDiary is very similar to nnml. This makes the idea of using nnoo
+;; (to derive nndiary from nnml) natural. However, my experience with nnoo
+;; is that for reasonably complex back ends like this one, noo is a burden
+;; rather than an help. It's tricky to use, not everything can be inherited,
+;; what can be inherited and when is not very clear, and you've got to be
+;; very careful because a little mistake can fuck up your other back ends,
+;; especially because their variables will be use instead of your real ones.
+;; Finally, I found it easier to just clone the needed parts of nnml, and
+;; tracking nnml updates is not a big deal.
;; IMHO, nnoo is actually badly designed. A much simpler, and yet more
;; powerful one would be to make *real* functions and variables for a new
-;; backend based on another. Lisp is a reflexive language so that's a very
+;; back end based on another. Lisp is a reflexive language so that's a very
;; easy thing to do: inspect the function's form, replace occurences of
;; <nnfrom> (even in strings) with <nnto>, and you're done.
;; * nndiary-get-new-mail, nndiary-mail-source and nndiary-split-methods:
;; NNDiary has some experimental parts, in the sense Gnus normally uses only
-;; one mail backends for mail retreival and splitting. This backend is also
-;; an attempt to make it behave differently. For Gnus developpers: as you
-;; can see if you snarf into the code, that was not a very difficult thing
-;; to do. Something should be done about the respooling breakage though.
+;; one mail back ends for mail retreival and splitting. This back end is
+;; also an attempt to make it behave differently. For Gnus developpers: as
+;; you can see if you snarf into the code, that was not a very difficult
+;; thing to do. Something should be done about the respooling breakage
+;; though.
;;; Code:
(apply #'error args))))
-;; Backend behavior customization ===========================================
+;; Back End behavior customization ===========================================
(defgroup nndiary nil
- "The Gnus Diary backend."
+ "The Gnus Diary back end."
:version "22.1"
:group 'gnus-diary)
:type 'boolean)
-;; Backend declaration ======================================================
+;; Back End declaration ======================================================
;; Well, most of this is nnml clonage.
(nnoo-declare nndiary)
(defvoo nndiary-directory (nnheader-concat gnus-directory "diary/")
- "Spool directory for the nndiary backend.")
+ "Spool directory for the nndiary back end.")
(defvoo nndiary-active-file
(expand-file-name "active" nndiary-directory)
- "Active file for the nndiary backend.")
+ "Active file for the nndiary back end.")
(defvoo nndiary-newsgroups-file
(expand-file-name "newsgroups" nndiary-directory)
- "Newsgroups description file for the nndiary backend.")
+ "Newsgroups description file for the nndiary back end.")
(defvoo nndiary-get-new-mail nil
"Whether nndiary gets new mail and split it.
-Contrary to traditional mail backends, this variable can be set to t
-even if your primary mail backend also retreives mail. In such a case,
+Contrary to traditional mail back ends, this variable can be set to t
+even if your primary mail back end also retreives mail. In such a case,
NDiary uses its own mail-sources and split-methods.")
(defvoo nndiary-nov-is-evil nil
\f
(defconst nndiary-version "0.2-b14"
- "Current Diary backend version.")
+ "Current Diary back end version.")
(defun nndiary-version ()
- "Current Diary backend version."
+ "Current Diary back end version."
(interactive)
(message "NNDiary version %s" nndiary-version))
(deffoo nndiary-request-scan (&optional group server)
;; Use our own mail sources and split methods while Gnus doesn't let us have
- ;; multiple backends for retrieving mail.
+ ;; multiple back ends for retrieving mail.
(let ((mail-sources nndiary-mail-sources)
(nnmail-split-methods nndiary-split-methods))
(setq nndiary-article-file-alist nil)
:type '(repeat symbol)
:group 'hi-lock)
-(defcustom hi-lock-file-patterns-policy 'never
+(defcustom hi-lock-file-patterns-policy 'ask
"Specify when hi-lock should use patterns found in file.
If `ask', prompt when patterns found in buffer; if bound to a function,
use patterns when function returns t (function is called with patterns
:group 'image-dired)
(defcustom image-dired-cmd-create-thumbnail-options
- "%p -size %wx%h \"%f\" -resize %wx%h +profile \"*\" jpeg:\"%t\""
+ "%p -size %wx%h \"%f\" -resize %wx%h -strip jpeg:\"%t\""
"Format of command used to create thumbnail image.
Available options are %p which is replaced by
`image-dired-cmd-create-thumbnail-program', %w which is replaced by
:group 'image-dired)
(defcustom image-dired-cmd-create-temp-image-options
- "%p -size %wx%h \"%f\" -resize %wx%h +profile \"*\" jpeg:\"%t\""
+ "%p -size %wx%h \"%f\" -resize %wx%h -strip jpeg:\"%t\""
"Format of command used to create temporary image for display window.
Available options are %p which is replaced by
`image-dired-cmd-create-temp-image-program', %w and %h which is replaced by
If optional argument ORIGINAL-SIZE is non-nil, display image in its
original size."
(let ((new-file (expand-file-name image-dired-temp-image-file))
- width height command ret)
+ width height command ret
+ (image-type 'jpeg))
(setq file (expand-file-name file))
(if (not original-size)
(progn
shell-command-switch command))
(if (not (= 0 ret))
(error "Could not resize image")))
+ (setq image-type (image-type-from-file-name file))
(copy-file file new-file t))
(with-current-buffer (image-dired-create-display-image-buffer)
(let ((inhibit-read-only t))
(erase-buffer)
(clear-image-cache)
- (image-dired-insert-image image-dired-temp-image-file 'jpeg 0 0)
+ (image-dired-insert-image image-dired-temp-image-file image-type 0 0)
(goto-char (point-min))
(image-dired-update-property 'original-file-name file)))))
(defvar Info-current-subfile nil
"Info subfile that is actually in the *info* buffer now.
-nil if current Info file is not split into subfiles.")
+It is nil if current Info file is not split into subfiles.")
(defvar Info-current-node nil
"Name of node that Info is now looking at, or nil.")
;; Fontify http and ftp references
(goto-char (point-min))
(when not-fontified-p
- (while (re-search-forward "[hf]t?tp://[^ \t\n\"`({<>})']+" nil t)
+ (while (re-search-forward "\\(https?\\|ftp\\)://[^ \t\n\"`({<>})']+" nil t)
(add-text-properties (match-beginning 0) (match-end 0)
'(font-lock-face info-xref
mouse-face highlight
(iso-translate-conventions from to iso-sgml2iso-trans-tab))
;;;###autoload
-(defun iso-cvt-read-only ()
+(defun iso-cvt-read-only (&rest ignore)
"Warn that format is read-only."
(interactive)
(error "This format is read-only; specify another format for writing"))
;;;###autoload
-(defun iso-cvt-write-only ()
+(defun iso-cvt-write-only (&rest ignore)
"Warn that format is write-only."
(interactive)
(error "This format is write-only"))
("\\.\\(sx[dmicw]\\|odt\\|tar\\|tgz\\)\\'" . no-conversion)
("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion)
("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion)
+ ("\\.pdf\\'" . no-conversion)
("/#[^/]+#\\'" . emacs-mule))
"Alist of filename patterns vs corresponding coding systems.
Each element looks like (REGEXP . CODING-SYSTEM).
\f
;;;### (autoloads (defadvice ad-activate ad-add-advice ad-disable-advice
;;;;;; ad-enable-advice ad-default-compilation-action ad-redefinition-action)
-;;;;;; "advice" "emacs-lisp/advice.el" (17842 54152))
+;;;;;; "advice" "emacs-lisp/advice.el" (17992 30878))
;;; Generated autoloads from emacs-lisp/advice.el
(defvar ad-redefinition-action (quote warn) "\
(defvar autoarg-mode nil "\
Non-nil if Autoarg mode is enabled.
-See the command `autoarg-mode' for a description of this minor-mode.")
+See the command `autoarg-mode' for a description of this minor mode.")
(custom-autoload (quote autoarg-mode) "autoarg" nil)
(defvar autoarg-kp-mode nil "\
Non-nil if Autoarg-Kp mode is enabled.
-See the command `autoarg-kp-mode' for a description of this minor-mode.
+See the command `autoarg-kp-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `autoarg-kp-mode'.")
(defvar auto-insert-mode nil "\
Non-nil if Auto-Insert mode is enabled.
-See the command `auto-insert-mode' for a description of this minor-mode.
+See the command `auto-insert-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `auto-insert-mode'.")
(defvar global-auto-revert-mode nil "\
Non-nil if Global-Auto-Revert mode is enabled.
-See the command `global-auto-revert-mode' for a description of this minor-mode.
+See the command `global-auto-revert-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `global-auto-revert-mode'.")
(defvar display-battery-mode nil "\
Non-nil if Display-Battery mode is enabled.
-See the command `display-battery-mode' for a description of this minor-mode.
+See the command `display-battery-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `display-battery-mode'.")
;;;***
\f
;;;### (autoloads (insert-text-button make-text-button insert-button
-;;;;;; make-button define-button-type) "button" "button.el" (17964
-;;;;;; 48350))
+;;;;;; make-button define-button-type) "button" "button.el" (17992
+;;;;;; 30877))
;;; Generated autoloads from button.el
(defvar button-map (let ((map (make-sparse-keymap))) (define-key map "\r" (quote push-button)) (define-key map [mouse-2] (quote push-button)) map) "\
\f
;;;### (autoloads (pike-mode idl-mode java-mode objc-mode c++-mode
;;;;;; c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el"
-;;;;;; (17962 52849))
+;;;;;; (17992 30878))
;;; Generated autoloads from progmodes/cc-mode.el
(autoload (quote c-initialize-cc-mode) "cc-mode" "\
;;;;;; compilation-shell-minor-mode compilation-mode compilation-start
;;;;;; compile compilation-disable-input compile-command compilation-search-path
;;;;;; compilation-ask-about-save compilation-window-height compilation-mode-hook)
-;;;;;; "compile" "progmodes/compile.el" (17952 11093))
+;;;;;; "compile" "progmodes/compile.el" (18006 55797))
;;; Generated autoloads from progmodes/compile.el
(defvar compilation-mode-hook nil "\
(defvar partial-completion-mode nil "\
Non-nil if Partial-Completion mode is enabled.
-See the command `partial-completion-mode' for a description of this minor-mode.
+See the command `partial-completion-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `partial-completion-mode'.")
(defvar dynamic-completion-mode nil "\
Non-nil if Dynamic-Completion mode is enabled.
-See the command `dynamic-completion-mode' for a description of this minor-mode.
+See the command `dynamic-completion-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `dynamic-completion-mode'.")
(defvar cua-mode nil "\
Non-nil if Cua mode is enabled.
-See the command `cua-mode' for a description of this minor-mode.
+See the command `cua-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `cua-mode'.")
(defvar global-cwarn-mode nil "\
Non-nil if Global-Cwarn mode is enabled.
-See the command `global-cwarn-mode' for a description of this minor-mode.
+See the command `global-cwarn-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `global-cwarn-mode'.")
;;;***
\f
;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el"
-;;;;;; (17842 58280))
+;;;;;; (18006 55794))
;;; Generated autoloads from dabbrev.el
(define-key esc-map "/" 'dabbrev-expand)
(define-key esc-map [?\C-/] 'dabbrev-completion)
(defvar delete-selection-mode nil "\
Non-nil if Delete-Selection mode is enabled.
-See the command `delete-selection-mode' for a description of this minor-mode.
+See the command `delete-selection-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `delete-selection-mode'.")
(defvar desktop-save-mode nil "\
Non-nil if Desktop-Save mode is enabled.
-See the command `desktop-save-mode' for a description of this minor-mode.")
+See the command `desktop-save-mode' for a description of this minor mode.")
(custom-autoload (quote desktop-save-mode) "desktop" nil)
;;;***
\f
;;;### (autoloads (diff-backup diff diff-command diff-switches) "diff"
-;;;;;; "diff.el" (17842 58280))
+;;;;;; "diff.el" (17992 30877))
;;; Generated autoloads from diff.el
(defvar diff-switches "-c" "\
;;;***
\f
;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "diff-mode.el"
-;;;;;; (17942 63381))
+;;;;;; (17992 30877))
;;; Generated autoloads from diff-mode.el
(autoload (quote diff-mode) "diff-mode" "\
;;;;;; dired dired-copy-preserve-time dired-dwim-target dired-keep-marker-symlink
;;;;;; dired-keep-marker-hardlink dired-keep-marker-copy dired-keep-marker-rename
;;;;;; dired-trivial-filenames dired-ls-F-marks-symlinks dired-listing-switches)
-;;;;;; "dired" "dired.el" (17963 25980))
+;;;;;; "dired" "dired.el" (18015 32019))
;;; Generated autoloads from dired.el
(defvar dired-listing-switches "-al" "\
;;;***
\f
;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el"
-;;;;;; (17962 27565))
+;;;;;; (17992 30877))
;;; Generated autoloads from dired-x.el
(autoload (quote dired-jump) "dired-x" "\
\f
;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap
;;;;;; define-globalized-minor-mode define-minor-mode) "easy-mmode"
-;;;;;; "emacs-lisp/easy-mmode.el" (17964 48351))
+;;;;;; "emacs-lisp/easy-mmode.el" (17992 30878))
;;; Generated autoloads from emacs-lisp/easy-mmode.el
(defalias (quote easy-mmode-define-minor-mode) (quote define-minor-mode))
;;;***
\f
;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string)
-;;;;;; "eldoc" "emacs-lisp/eldoc.el" (17842 54152))
+;;;;;; "eldoc" "emacs-lisp/eldoc.el" (17992 30878))
;;; Generated autoloads from emacs-lisp/eldoc.el
(defvar eldoc-minor-mode-string " ElDoc" "\
\(fn &optional ARG)" t nil)
(autoload (quote turn-on-eldoc-mode) "eldoc" "\
-Unequivocally turn on eldoc-mode (see variable documentation).
+Unequivocally turn on ElDoc mode (see command `eldoc-mode').
\(fn)" t nil)
(defvar encoded-kbd-mode nil "\
Non-nil if Encoded-Kbd mode is enabled.
-See the command `encoded-kbd-mode' for a description of this minor-mode.
+See the command `encoded-kbd-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `encoded-kbd-mode'.")
(defvar erc-track-minor-mode nil "\
Non-nil if Erc-Track minor mode is enabled.
-See the command `erc-track-minor-mode' for a description of this minor-mode.")
+See the command `erc-track-minor-mode' for a description of this minor mode.")
(custom-autoload (quote erc-track-minor-mode) "erc-track" nil)
;;;***
\f
-;;;### (autoloads nil "fill" "textmodes/fill.el" (17961 33560))
+;;;### (autoloads nil "fill" "textmodes/fill.el" (18007 39658))
;;; Generated autoloads from textmodes/fill.el
(put 'colon-double-space 'safe-local-variable 'booleanp)
\f
;;;### (autoloads (find-grep-dired find-name-dired find-dired find-grep-options
;;;;;; find-ls-subdir-switches find-ls-option) "find-dired" "find-dired.el"
-;;;;;; (17842 58279))
+;;;;;; (17992 30877))
;;; Generated autoloads from find-dired.el
(defvar find-ls-option (if (eq system-type (quote berkeley-unix)) (quote ("-ls" . "-gilsb")) (quote ("-exec ls -ld {} \\;" . "-ld"))) "\
\f
;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
-;;;;;; "flyspell" "textmodes/flyspell.el" (17962 52849))
+;;;;;; "flyspell" "textmodes/flyspell.el" (18006 55797))
;;; Generated autoloads from textmodes/flyspell.el
(autoload (quote flyspell-prog-mode) "flyspell" "\
;;;***
\f
;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d)
-;;;;;; "gnus-diary" "gnus/gnus-diary.el" (17842 54741))
+;;;;;; "gnus-diary" "gnus/gnus-diary.el" (17992 30878))
;;; Generated autoloads from gnus/gnus-diary.el
(autoload (quote gnus-user-format-function-d) "gnus-diary" "\
;;;***
\f
;;;### (autoloads (gdb-script-mode jdb pdb perldb xdb dbx sdb gdb)
-;;;;;; "gud" "progmodes/gud.el" (17950 21759))
+;;;;;; "gud" "progmodes/gud.el" (17992 30878))
;;; Generated autoloads from progmodes/gud.el
(autoload (quote gdb) "gud" "\
;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer
;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer
;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el"
-;;;;;; (17964 48351))
+;;;;;; (17992 30877))
;;; Generated autoloads from hi-lock.el
(autoload (quote hi-lock-mode) "hi-lock" "\
(defvar global-hi-lock-mode nil "\
Non-nil if Global-Hi-Lock mode is enabled.
-See the command `global-hi-lock-mode' for a description of this minor-mode.
+See the command `global-hi-lock-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `global-hi-lock-mode'.")
(defvar global-hl-line-mode nil "\
Non-nil if Global-Hl-Line mode is enabled.
-See the command `global-hl-line-mode' for a description of this minor-mode.
+See the command `global-hl-line-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `global-hl-line-mode'.")
(defvar icomplete-mode nil "\
Non-nil if Icomplete mode is enabled.
-See the command `icomplete-mode' for a description of this minor-mode.
+See the command `icomplete-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `icomplete-mode'.")
;;;***
\f
;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el"
-;;;;;; (17935 59227))
+;;;;;; (17992 30878))
;;; Generated autoloads from progmodes/idlwave.el
(autoload (quote idlwave-mode) "idlwave" "\
;;;;;; image-dired-jump-thumbnail-buffer image-dired-delete-tag
;;;;;; image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs
;;;;;; image-dired-dired-with-window-configuration image-dired-dired-insert-marked-thumbs)
-;;;;;; "image-dired" "image-dired.el" (17963 26200))
+;;;;;; "image-dired" "image-dired.el" (17992 30877))
;;; Generated autoloads from image-dired.el
(autoload (quote image-dired-dired-insert-marked-thumbs) "image-dired" "\
(defvar auto-image-file-mode nil "\
Non-nil if Auto-Image-File mode is enabled.
-See the command `auto-image-file-mode' for a description of this minor-mode.
+See the command `auto-image-file-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `auto-image-file-mode'.")
;;;### (autoloads (Info-speedbar-browser Info-goto-emacs-key-command-node
;;;;;; Info-goto-emacs-command-node Info-mode info-apropos Info-index
;;;;;; Info-directory Info-on-current-buffer info-standalone info-emacs-manual
-;;;;;; info info-other-window) "info" "info.el" (17964 52883))
+;;;;;; info info-other-window) "info" "info.el" (18006 55795))
;;; Generated autoloads from info.el
(autoload (quote info-other-window) "info" "\
;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only
;;;;;; iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso
;;;;;; iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt"
-;;;;;; "international/iso-cvt.el" (17842 54888))
+;;;;;; "international/iso-cvt.el" (17992 30878))
;;; Generated autoloads from international/iso-cvt.el
(autoload (quote iso-spanish) "iso-cvt" "\
(autoload (quote iso-cvt-read-only) "iso-cvt" "\
Warn that format is read-only.
-\(fn)" t nil)
+\(fn &rest IGNORE)" t nil)
(autoload (quote iso-cvt-write-only) "iso-cvt" "\
Warn that format is write-only.
-\(fn)" t nil)
+\(fn &rest IGNORE)" t nil)
(autoload (quote iso-cvt-define-menu) "iso-cvt" "\
Add submenus to the File menu, to convert to and from various formats.
;;;;;; ispell-region ispell-change-dictionary ispell-kill-ispell
;;;;;; ispell-help ispell-pdict-save ispell-word ispell-local-dictionary-alist
;;;;;; ispell-personal-dictionary) "ispell" "textmodes/ispell.el"
-;;;;;; (17921 16827))
+;;;;;; (18006 55797))
;;; Generated autoloads from textmodes/ispell.el
(put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive))))
(defvar iswitchb-mode nil "\
Non-nil if Iswitchb mode is enabled.
-See the command `iswitchb-mode' for a description of this minor-mode.
+See the command `iswitchb-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `iswitchb-mode'.")
;;;***
\f
;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches)
-;;;;;; "locate" "locate.el" (17965 12050))
+;;;;;; "locate" "locate.el" (17992 30877))
;;; Generated autoloads from locate.el
(defvar locate-ls-subdir-switches "-al" "\
;;;***
\f
-;;;### (autoloads (log-edit) "log-edit" "log-edit.el" (17842 58279))
+;;;### (autoloads (log-edit) "log-edit" "log-edit.el" (18010 5298))
;;; Generated autoloads from log-edit.el
(autoload (quote log-edit) "log-edit" "\
;;;***
\f
-;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (17842
-;;;;;; 58279))
+;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (17992
+;;;;;; 30877))
;;; Generated autoloads from longlines.el
(autoload (quote longlines-mode) "longlines" "\
;;;***
\f
;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el"
-;;;;;; (17851 20943))
+;;;;;; (18006 55796))
;;; Generated autoloads from ls-lisp.el
(defvar ls-lisp-support-shell-wildcards t "\
;;;***
\f
;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup)
-;;;;;; "mailabbrev" "mail/mailabbrev.el" (17842 55035))
+;;;;;; "mailabbrev" "mail/mailabbrev.el" (17992 30878))
;;; Generated autoloads from mail/mailabbrev.el
(autoload (quote mail-abbrevs-setup) "mailabbrev" "\
;;;***
\f
-;;;### (autoloads (man-follow man) "man" "man.el" (17925 15265))
+;;;### (autoloads (man-follow man) "man" "man.el" (17992 30877))
;;; Generated autoloads from man.el
(defalias (quote manual-entry) (quote man))
(defvar menu-bar-mode nil "\
Non-nil if Menu-Bar mode is enabled.
-See the command `menu-bar-mode' for a description of this minor-mode.
+See the command `menu-bar-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `menu-bar-mode'.")
;;;;;; message-cite-function message-yank-prefix message-citation-line-function
;;;;;; message-send-mail-function message-user-organization-file
;;;;;; message-signature-separator message-from-style) "message"
-;;;;;; "gnus/message.el" (17949 41467))
+;;;;;; "gnus/message.el" (18010 19867))
;;; Generated autoloads from gnus/message.el
(defvar message-from-style (quote default) "\
(defvar minibuffer-electric-default-mode nil "\
Non-nil if Minibuffer-Electric-Default mode is enabled.
-See the command `minibuffer-electric-default-mode' for a description of this minor-mode.
+See the command `minibuffer-electric-default-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `minibuffer-electric-default-mode'.")
(defvar mouse-sel-mode nil "\
Non-nil if Mouse-Sel mode is enabled.
-See the command `mouse-sel-mode' for a description of this minor-mode.
+See the command `mouse-sel-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `mouse-sel-mode'.")
;;;***
\f
-;;;### (autoloads (msb-mode) "msb" "msb.el" (17842 58279))
+;;;### (autoloads (msb-mode) "msb" "msb.el" (18006 55796))
;;; Generated autoloads from msb.el
(defvar msb-mode nil "\
Non-nil if Msb mode is enabled.
-See the command `msb-mode' for a description of this minor-mode.
+See the command `msb-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `msb-mode'.")
(defvar mouse-wheel-mode nil "\
Non-nil if Mouse-Wheel mode is enabled.
-See the command `mouse-wheel-mode' for a description of this minor-mode.
+See the command `mouse-wheel-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `mouse-wheel-mode'.")
;;;;;; uncomment-region comment-kill comment-set-column comment-indent
;;;;;; comment-indent-default comment-normalize-vars comment-multi-line
;;;;;; comment-padding comment-style comment-column) "newcomment"
-;;;;;; "newcomment.el" (17936 9617))
+;;;;;; "newcomment.el" (17992 30877))
;;; Generated autoloads from newcomment.el
(defalias (quote indent-for-comment) (quote comment-indent))
;;;***
\f
;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el"
-;;;;;; (17842 54741))
+;;;;;; (17992 30878))
;;; Generated autoloads from gnus/nndiary.el
(autoload (quote nndiary-generate-nov-databases) "nndiary" "\
;;;***
\f
-;;;### (autoloads (show-paren-mode) "paren" "paren.el" (17960 50513))
+;;;### (autoloads (show-paren-mode) "paren" "paren.el" (18016 8765))
;;; Generated autoloads from paren.el
(defvar show-paren-mode nil "\
Non-nil if Show-Paren mode is enabled.
-See the command `show-paren-mode' for a description of this minor-mode.
+See the command `show-paren-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `show-paren-mode'.")
(defvar pc-selection-mode nil "\
Non-nil if Pc-Selection mode is enabled.
-See the command `pc-selection-mode' for a description of this minor-mode.
+See the command `pc-selection-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `pc-selection-mode'.")
\f
;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status
;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs"
-;;;;;; "pcvs.el" (17842 58279))
+;;;;;; "pcvs.el" (18006 55796))
;;; Generated autoloads from pcvs.el
(autoload (quote cvs-checkout) "pcvs" "\
(defvar cvs-dired-use-hook (quote (4)) "\
Whether or not opening a CVS directory should run PCL-CVS.
-nil means never do it.
+A value of nil means never do it.
ALWAYS means to always do it unless a prefix argument is given to the
command that prompted the opening of the directory.
Anything else means to do it only if the prefix arg is equal to this value.")
;;;;;; pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview
;;;;;; pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript
;;;;;; pr-ps-directory-preview pr-interface) "printing" "printing.el"
-;;;;;; (17866 8704))
+;;;;;; (18006 55796))
;;; Generated autoloads from printing.el
(autoload (quote pr-interface) "printing" "\
C-u 2 M-x pr-ps-fast-fire RET
The command prompts the user for a N-UP value, then for a current
PostScript printer and, finally, for a file name. Then change the active
- printer to that choosen by user and saves the PostScript image in
+ printer to that chosen by user and saves the PostScript image in
that file instead of sending it to the printer.
If it's an integer greater or equal to 2, the command prompts the user for a
current PostScript printer and for a file name. Then change the active
- printer to that choosen by user and saves the PostScript image in that file
+ printer to that chosen by user and saves the PostScript image in that file
instead of sending it to the printer.
If it's a symbol which it's defined in `pr-ps-printer-alist', it's the new
;;;;;; ps-spool-region ps-spool-buffer-with-faces ps-spool-buffer
;;;;;; ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces
;;;;;; ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type
-;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (17900
-;;;;;; 43896))
+;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (18006
+;;;;;; 55796))
;;; Generated autoloads from ps-print.el
(defvar ps-page-dimensions-database (list (list (quote a4) (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list (quote a3) (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list (quote letter) (* 72 8.5) (* 72 11.0) "Letter") (list (quote legal) (* 72 8.5) (* 72 14.0) "Legal") (list (quote letter-small) (* 72 7.68) (* 72 10.16) "LetterSmall") (list (quote tabloid) (* 72 11.0) (* 72 17.0) "Tabloid") (list (quote ledger) (* 72 17.0) (* 72 11.0) "Ledger") (list (quote statement) (* 72 5.5) (* 72 8.5) "Statement") (list (quote executive) (* 72 7.5) (* 72 10.0) "Executive") (list (quote a4small) (* 72 7.47) (* 72 10.85) "A4Small") (list (quote b4) (* 72 10.125) (* 72 14.33) "B4") (list (quote b5) (* 72 7.16) (* 72 10.125) "B5")) "\
\(fn FACE-EXTENSION &optional MERGE-P ALIST-SYM)" nil nil)
+;;;***
+\f
+;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el"
+;;;;;; (17992 30878))
+;;; Generated autoloads from progmodes/python.el
+
+(add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode)))
+
+(add-to-list (quote interpreter-mode-alist) (quote ("python" . python-mode)))
+
+(add-to-list (quote auto-mode-alist) (quote ("\\.py\\'" . python-mode)))
+
+(autoload (quote run-python) "python" "\
+Run an inferior Python process, input and output via buffer *Python*.
+CMD is the Python command to run. NOSHOW non-nil means don't show the
+buffer automatically.
+
+Normally, if there is a process already running in `python-buffer',
+switch to that buffer. Interactively, a prefix arg allows you to edit
+the initial command line (default is `python-command'); `-i' etc. args
+will be added to this as appropriate. A new process is started if:
+one isn't running attached to `python-buffer', or interactively the
+default `python-command', or argument NEW is non-nil. See also the
+documentation for `python-buffer'.
+
+Runs the hook `inferior-python-mode-hook' (after the
+`comint-mode-hook' is run). (Type \\[describe-mode] in the process
+buffer for a list of commands.)
+
+\(fn &optional CMD NOSHOW NEW)" t nil)
+
+(autoload (quote python-mode) "python" "\
+Major mode for editing Python files.
+Font Lock mode is currently required for correct parsing of the source.
+See also `jython-mode', which is actually invoked if the buffer appears to
+contain Jython code. See also `run-python' and associated Python mode
+commands for running Python under Emacs.
+
+The Emacs commands which work with `defun's, e.g. \\[beginning-of-defun], deal
+with nested `def' and `class' blocks. They take the innermost one as
+current without distinguishing method and class definitions. Used multiple
+times, they move over others at the same indentation level until they reach
+the end of definitions at that level, when they move up a level.
+\\<python-mode-map>
+Colon is electric: it outdents the line if appropriate, e.g. for
+an else statement. \\[python-backspace] at the beginning of an indented statement
+deletes a level of indentation to close the current block; otherwise it
+deletes a character backward. TAB indents the current line relative to
+the preceding code. Successive TABs, with no intervening command, cycle
+through the possibilities for indentation on the basis of enclosing blocks.
+
+\\[fill-paragraph] fills comments and multi-line strings appropriately, but has no
+effect outside them.
+
+Supports Eldoc mode (only for functions, using a Python process),
+Info-Look and Imenu. In Outline minor mode, `class' and `def'
+lines count as headers. Symbol completion is available in the
+same way as in the Python shell using the `rlcompleter' module
+and this is added to the Hippie Expand functions locally if
+Hippie Expand mode is turned on. Completion of symbols of the
+form x.y only works if the components are literal
+module/attribute names, not variables. An abbrev table is set up
+with skeleton expansions for compound statement templates.
+
+\\{python-mode-map}
+
+\(fn)" t nil)
+
+(autoload (quote jython-mode) "python" "\
+Major mode for editing Jython files.
+Like `python-mode', but sets up parameters for Jython subprocesses.
+Runs `jython-mode-hook' after `python-mode-hook'.
+
+\(fn)" t nil)
+
;;;***
\f
;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el"
;;;***
\f
;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc"
-;;;;;; "net/rcirc.el" (17907 1946))
+;;;;;; "net/rcirc.el" (18006 55797))
;;; Generated autoloads from net/rcirc.el
(autoload (quote rcirc) "rcirc" "\
(defvar rcirc-track-minor-mode nil "\
Non-nil if Rcirc-Track minor mode is enabled.
-See the command `rcirc-track-minor-mode' for a description of this minor-mode.
+See the command `rcirc-track-minor-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `rcirc-track-minor-mode'.")
(defvar recentf-mode nil "\
Non-nil if Recentf mode is enabled.
-See the command `recentf-mode' for a description of this minor-mode.
+See the command `recentf-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `recentf-mode'.")
(defvar global-reveal-mode nil "\
Non-nil if Global-Reveal mode is enabled.
-See the command `global-reveal-mode' for a description of this minor-mode.
+See the command `global-reveal-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `global-reveal-mode'.")
;;;;;; rmail-mail-new-frame rmail-primary-inbox-list rmail-delete-after-output
;;;;;; rmail-highlight-face rmail-highlighted-headers rmail-retry-ignored-headers
;;;;;; rmail-displayed-headers rmail-ignored-headers rmail-dont-reply-to-names
-;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (17938
-;;;;;; 22875))
+;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (18006
+;;;;;; 55797))
;;; Generated autoloads from mail/rmail.el
(autoload (quote rmail-movemail-variant-p) "rmail" "\
;;;***
\f
-;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (17842
-;;;;;; 54152))
+;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (18011
+;;;;;; 44080))
;;; Generated autoloads from emacs-lisp/rx.el
(autoload (quote rx-to-string) "rx" "\
matches the empty string, but only at point.
`word-start', `bow'
- matches the empty string, but only at the beginning or end of a
- word.
+ matches the empty string, but only at the beginning of a word.
`word-end', `eow'
matches the empty string, but only at the end of a word.
matches the empty string, but not at the beginning or end of a
word.
+`symbol-start'
+ matches the empty string, but only at the beginning of a symbol.
+
+`symbol-end'
+ matches the empty string, but only at the end of a symbol.
+
`digit', `numeric', `num'
matches 0 through 9.
(defvar scroll-all-mode nil "\
Non-nil if Scroll-All mode is enabled.
-See the command `scroll-all-mode' for a description of this minor-mode.
+See the command `scroll-all-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `scroll-all-mode'.")
(defvar server-mode nil "\
Non-nil if Server mode is enabled.
-See the command `server-mode' for a description of this minor-mode.
+See the command `server-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `server-mode'.")
;;;***
\f
;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el"
-;;;;;; (17887 16434))
+;;;;;; (18010 58080))
;;; Generated autoloads from textmodes/sgml-mode.el
(autoload (quote sgml-mode) "sgml-mode" "\
;;;***
\f
;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el"
-;;;;;; (17842 56332))
+;;;;;; (17992 30878))
;;; Generated autoloads from progmodes/sh-script.el
(put 'sh-shell 'safe-local-variable 'symbolp)
;;;***
\f
-;;;### (autoloads nil "simple" "simple.el" (17965 11665))
+;;;### (autoloads nil "simple" "simple.el" (18009 38727))
;;; Generated autoloads from simple.el
(put 'fill-prefix 'safe-local-variable 'string-or-null-p)
(defvar strokes-mode nil "\
Non-nil if Strokes mode is enabled.
-See the command `strokes-mode' for a description of this minor-mode.
+See the command `strokes-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `strokes-mode'.")
;;;***
\f
-;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (17963 25911))
+;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (18006 55796))
;;; Generated autoloads from t-mouse.el
(defvar t-mouse-mode nil "\
Non-nil if T-Mouse mode is enabled.
-See the command `t-mouse-mode' for a description of this minor-mode.
+See the command `t-mouse-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `t-mouse-mode'.")
(custom-autoload (quote t-mouse-mode) "t-mouse" nil)
(autoload (quote t-mouse-mode) "t-mouse" "\
-Toggle t-mouse mode.
+Toggle t-mouse mode to use the mouse in Linux consoles.
With prefix arg, turn t-mouse mode on iff arg is positive.
-Turn it on to use Emacs mouse commands, and off to use t-mouse commands.
+This allows the use of the mouse when operating on a Linux console, in the
+same way as you can use the mouse under X11.
+It requires the `mev' program, part of the `gpm' utilities.
\(fn &optional ARG)" t nil)
;;;;;; table-recognize table-insert-row-column table-insert-column
;;;;;; table-insert-row table-insert table-point-left-cell-hook
;;;;;; table-point-entered-cell-hook table-load-hook table-cell-map-hook)
-;;;;;; "table" "textmodes/table.el" (17842 58276))
+;;;;;; "table" "textmodes/table.el" (18012 17784))
;;; Generated autoloads from textmodes/table.el
(defvar table-cell-map-hook nil "\
;;;***
\f
-;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (17842 58278))
+;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (18010 5426))
;;; Generated autoloads from tar-mode.el
(autoload (quote tar-mode) "tar-mode" "\
;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command
;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp
;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el"
-;;;;;; (17842 58276))
+;;;;;; (17992 30878))
;;; Generated autoloads from textmodes/tex-mode.el
(defvar tex-shell-file-name nil "\
;;;***
\f
;;;### (autoloads (display-time-mode display-time display-time-day-and-date)
-;;;;;; "time" "time.el" (17842 58278))
+;;;;;; "time" "time.el" (18006 55796))
;;; Generated autoloads from time.el
(defvar display-time-day-and-date nil "\
(defvar display-time-mode nil "\
Non-nil if Display-Time mode is enabled.
-See the command `display-time-mode' for a description of this minor-mode.
+See the command `display-time-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `display-time-mode'.")
;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out
;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in
;;;;;; timeclock-modeline-display) "timeclock" "calendar/timeclock.el"
-;;;;;; (17842 53792))
+;;;;;; (17992 30878))
;;; Generated autoloads from calendar/timeclock.el
(autoload (quote timeclock-modeline-display) "timeclock" "\
;;;***
\f
;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el"
-;;;;;; (17842 54264))
+;;;;;; (18006 55796))
;;; Generated autoloads from emulation/tpu-edt.el
(defvar tpu-edt-mode nil "\
Non-nil if Tpu-Edt mode is enabled.
-See the command `tpu-edt-mode' for a description of this minor-mode.
+See the command `tpu-edt-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `tpu-edt-mode'.")
;;;***
\f
-;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (17892
-;;;;;; 62683))
+;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (18006
+;;;;;; 55796))
;;; Generated autoloads from tutorial.el
(autoload (quote help-with-tutorial) "tutorial" "\
(defvar url-handler-mode nil "\
Non-nil if Url-Handler mode is enabled.
-See the command `url-handler-mode' for a description of this minor-mode.
+See the command `url-handler-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `url-handler-mode'.")
;;;***
\f
;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el"
-;;;;;; (17842 56569))
+;;;;;; (18012 18089))
;;; Generated autoloads from url/url-mailto.el
(autoload (quote url-mail) "url-mailto" "\
;;;;;; vc-directory vc-merge vc-insert-headers vc-version-other-window
;;;;;; vc-diff vc-register vc-next-action vc-do-command edit-vc-file
;;;;;; with-vc-file vc-branch-part vc-trunk-p vc-before-checkin-hook
-;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc.el" (17842 58278))
+;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc.el" (17992 30877))
;;; Generated autoloads from vc.el
(defvar vc-checkout-hook nil "\
\f
;;;### (autoloads (View-exit-and-edit view-mode-enter view-mode view-buffer-other-frame
;;;;;; view-buffer-other-window view-buffer view-file-other-frame
-;;;;;; view-file-other-window view-file) "view" "view.el" (17930
-;;;;;; 34071))
+;;;;;; view-file-other-window view-file) "view" "view.el" (18006
+;;;;;; 55796))
;;; Generated autoloads from view.el
(defvar view-mode nil "\
(defvar which-function-mode nil "\
Non-nil if Which-Function mode is enabled.
-See the command `which-function-mode' for a description of this minor-mode.
+See the command `which-function-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `which-function-mode'.")
(defvar whitespace-global-mode nil "\
Non-nil if Whitespace-Global mode is enabled.
-See the command `whitespace-global-mode' for a description of this minor-mode.
+See the command `whitespace-global-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `whitespace-global-mode'.")
;;;***
\f
-;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (17938
-;;;;;; 61442))
+;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (18007
+;;;;;; 39657))
;;; Generated autoloads from xt-mouse.el
(defvar xterm-mouse-mode nil "\
Non-nil if Xterm-Mouse mode is enabled.
-See the command `xterm-mouse-mode' for a description of this minor-mode.
+See the command `xterm-mouse-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `xterm-mouse-mode'.")
;;;;;; "url/url-vars.el" "url/vc-dav.el" "vc-hooks.el" "vcursor.el"
;;;;;; "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el"
;;;;;; "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el"
-;;;;;; "x-dnd.el") (17965 26976 559735))
+;;;;;; "x-dnd.el") (18016 62249 573562))
;;;***
\f
\f
;;;### (autoloads (defadvice ad-activate ad-add-advice ad-disable-advice
;;;;;; ad-enable-advice ad-default-compilation-action ad-redefinition-action)
-;;;;;; "advice" "emacs-lisp/advice.el" (17842 54152))
+;;;;;; "advice" "emacs-lisp/advice.el" (17992 30878))
;;; Generated autoloads from emacs-lisp/advice.el
(defvar ad-redefinition-action (quote warn) "\
(defvar autoarg-mode nil "\
Non-nil if Autoarg mode is enabled.
-See the command `autoarg-mode' for a description of this minor-mode.")
+See the command `autoarg-mode' for a description of this minor mode.")
(custom-autoload (quote autoarg-mode) "autoarg" nil)
(defvar autoarg-kp-mode nil "\
Non-nil if Autoarg-Kp mode is enabled.
-See the command `autoarg-kp-mode' for a description of this minor-mode.
+See the command `autoarg-kp-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `autoarg-kp-mode'.")
(defvar auto-insert-mode nil "\
Non-nil if Auto-Insert mode is enabled.
-See the command `auto-insert-mode' for a description of this minor-mode.
+See the command `auto-insert-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `auto-insert-mode'.")
(defvar global-auto-revert-mode nil "\
Non-nil if Global-Auto-Revert mode is enabled.
-See the command `global-auto-revert-mode' for a description of this minor-mode.
+See the command `global-auto-revert-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `global-auto-revert-mode'.")
(defvar display-battery-mode nil "\
Non-nil if Display-Battery mode is enabled.
-See the command `display-battery-mode' for a description of this minor-mode.
+See the command `display-battery-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `display-battery-mode'.")
;;;***
\f
;;;### (autoloads (insert-text-button make-text-button insert-button
-;;;;;; make-button define-button-type) "button" "button.el" (17964
-;;;;;; 48350))
+;;;;;; make-button define-button-type) "button" "button.el" (17992
+;;;;;; 30877))
;;; Generated autoloads from button.el
(defvar button-map (let ((map (make-sparse-keymap))) (define-key map "\r" (quote push-button)) (define-key map [mouse-2] (quote push-button)) map) "\
\f
;;;### (autoloads (pike-mode idl-mode java-mode objc-mode c++-mode
;;;;;; c-mode c-initialize-cc-mode) "cc-mode" "progmodes/cc-mode.el"
-;;;;;; (17962 52849))
+;;;;;; (17992 30878))
;;; Generated autoloads from progmodes/cc-mode.el
(autoload (quote c-initialize-cc-mode) "cc-mode" "\
;;;;;; compilation-shell-minor-mode compilation-mode compilation-start
;;;;;; compile compilation-disable-input compile-command compilation-search-path
;;;;;; compilation-ask-about-save compilation-window-height compilation-mode-hook)
-;;;;;; "compile" "progmodes/compile.el" (17952 11093))
+;;;;;; "compile" "progmodes/compile.el" (18006 55797))
;;; Generated autoloads from progmodes/compile.el
(defvar compilation-mode-hook nil "\
(defvar partial-completion-mode nil "\
Non-nil if Partial-Completion mode is enabled.
-See the command `partial-completion-mode' for a description of this minor-mode.
+See the command `partial-completion-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `partial-completion-mode'.")
(defvar dynamic-completion-mode nil "\
Non-nil if Dynamic-Completion mode is enabled.
-See the command `dynamic-completion-mode' for a description of this minor-mode.
+See the command `dynamic-completion-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `dynamic-completion-mode'.")
(defvar cua-mode nil "\
Non-nil if Cua mode is enabled.
-See the command `cua-mode' for a description of this minor-mode.
+See the command `cua-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `cua-mode'.")
(defvar global-cwarn-mode nil "\
Non-nil if Global-Cwarn mode is enabled.
-See the command `global-cwarn-mode' for a description of this minor-mode.
+See the command `global-cwarn-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `global-cwarn-mode'.")
;;;***
\f
;;;### (autoloads (dabbrev-expand dabbrev-completion) "dabbrev" "dabbrev.el"
-;;;;;; (17842 58280))
+;;;;;; (18006 55794))
;;; Generated autoloads from dabbrev.el
(define-key esc-map "/" 'dabbrev-expand)
(define-key esc-map [?\C-/] 'dabbrev-completion)
(defvar delete-selection-mode nil "\
Non-nil if Delete-Selection mode is enabled.
-See the command `delete-selection-mode' for a description of this minor-mode.
+See the command `delete-selection-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `delete-selection-mode'.")
(defvar desktop-save-mode nil "\
Non-nil if Desktop-Save mode is enabled.
-See the command `desktop-save-mode' for a description of this minor-mode.")
+See the command `desktop-save-mode' for a description of this minor mode.")
(custom-autoload (quote desktop-save-mode) "desktop" nil)
;;;***
\f
;;;### (autoloads (diff-backup diff diff-command diff-switches) "diff"
-;;;;;; "diff.el" (17842 58280))
+;;;;;; "diff.el" (17992 30877))
;;; Generated autoloads from diff.el
(defvar diff-switches "-c" "\
;;;***
\f
;;;### (autoloads (diff-minor-mode diff-mode) "diff-mode" "diff-mode.el"
-;;;;;; (17942 63381))
+;;;;;; (17992 30877))
;;; Generated autoloads from diff-mode.el
(autoload (quote diff-mode) "diff-mode" "\
;;;;;; dired dired-copy-preserve-time dired-dwim-target dired-keep-marker-symlink
;;;;;; dired-keep-marker-hardlink dired-keep-marker-copy dired-keep-marker-rename
;;;;;; dired-trivial-filenames dired-ls-F-marks-symlinks dired-listing-switches)
-;;;;;; "dired" "dired.el" (17963 25980))
+;;;;;; "dired" "dired.el" (18015 32019))
;;; Generated autoloads from dired.el
(defvar dired-listing-switches "-al" "\
;;;***
\f
;;;### (autoloads (dired-do-relsymlink dired-jump) "dired-x" "dired-x.el"
-;;;;;; (17962 27565))
+;;;;;; (17992 30877))
;;; Generated autoloads from dired-x.el
(autoload (quote dired-jump) "dired-x" "\
\f
;;;### (autoloads (easy-mmode-defsyntax easy-mmode-defmap easy-mmode-define-keymap
;;;;;; define-globalized-minor-mode define-minor-mode) "easy-mmode"
-;;;;;; "emacs-lisp/easy-mmode.el" (17964 48351))
+;;;;;; "emacs-lisp/easy-mmode.el" (17992 30878))
;;; Generated autoloads from emacs-lisp/easy-mmode.el
(defalias (quote easy-mmode-define-minor-mode) (quote define-minor-mode))
;;;***
\f
;;;### (autoloads (turn-on-eldoc-mode eldoc-mode eldoc-minor-mode-string)
-;;;;;; "eldoc" "emacs-lisp/eldoc.el" (17842 54152))
+;;;;;; "eldoc" "emacs-lisp/eldoc.el" (17992 30878))
;;; Generated autoloads from emacs-lisp/eldoc.el
(defvar eldoc-minor-mode-string " ElDoc" "\
\(fn &optional ARG)" t nil)
(autoload (quote turn-on-eldoc-mode) "eldoc" "\
-Unequivocally turn on eldoc-mode (see variable documentation).
+Unequivocally turn on ElDoc mode (see command `eldoc-mode').
\(fn)" t nil)
(defvar encoded-kbd-mode nil "\
Non-nil if Encoded-Kbd mode is enabled.
-See the command `encoded-kbd-mode' for a description of this minor-mode.
+See the command `encoded-kbd-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `encoded-kbd-mode'.")
(defvar erc-track-minor-mode nil "\
Non-nil if Erc-Track minor mode is enabled.
-See the command `erc-track-minor-mode' for a description of this minor-mode.")
+See the command `erc-track-minor-mode' for a description of this minor mode.")
(custom-autoload (quote erc-track-minor-mode) "erc-track" nil)
;;;***
\f
-;;;### (autoloads nil "fill" "textmodes/fill.el" (17961 33560))
+;;;### (autoloads nil "fill" "textmodes/fill.el" (18007 39658))
;;; Generated autoloads from textmodes/fill.el
(put 'colon-double-space 'safe-local-variable 'booleanp)
\f
;;;### (autoloads (find-grep-dired find-name-dired find-dired find-grep-options
;;;;;; find-ls-subdir-switches find-ls-option) "find-dired" "find-dired.el"
-;;;;;; (17842 58279))
+;;;;;; (17992 30877))
;;; Generated autoloads from find-dired.el
(defvar find-ls-option (if (eq system-type (quote berkeley-unix)) (quote ("-ls" . "-gilsb")) (quote ("-exec ls -ld {} \\;" . "-ld"))) "\
\f
;;;### (autoloads (flyspell-buffer flyspell-region flyspell-mode-off
;;;;;; turn-off-flyspell turn-on-flyspell flyspell-mode flyspell-prog-mode)
-;;;;;; "flyspell" "textmodes/flyspell.el" (17962 52849))
+;;;;;; "flyspell" "textmodes/flyspell.el" (18006 55797))
;;; Generated autoloads from textmodes/flyspell.el
(autoload (quote flyspell-prog-mode) "flyspell" "\
;;;***
\f
;;;### (autoloads (gnus-user-format-function-D gnus-user-format-function-d)
-;;;;;; "gnus-diary" "gnus/gnus-diary.el" (17842 54741))
+;;;;;; "gnus-diary" "gnus/gnus-diary.el" (17992 30878))
;;; Generated autoloads from gnus/gnus-diary.el
(autoload (quote gnus-user-format-function-d) "gnus-diary" "\
;;;***
\f
;;;### (autoloads (gdb-script-mode jdb pdb perldb xdb dbx sdb gdb)
-;;;;;; "gud" "progmodes/gud.el" (17950 21759))
+;;;;;; "gud" "progmodes/gud.el" (17992 30878))
;;; Generated autoloads from progmodes/gud.el
(autoload (quote gdb) "gud" "\
;;;### (autoloads (hi-lock-write-interactive-patterns hi-lock-unface-buffer
;;;;;; hi-lock-face-phrase-buffer hi-lock-face-buffer hi-lock-line-face-buffer
;;;;;; global-hi-lock-mode hi-lock-mode) "hi-lock" "hi-lock.el"
-;;;;;; (17964 48351))
+;;;;;; (17992 30877))
;;; Generated autoloads from hi-lock.el
(autoload (quote hi-lock-mode) "hi-lock" "\
(defvar global-hi-lock-mode nil "\
Non-nil if Global-Hi-Lock mode is enabled.
-See the command `global-hi-lock-mode' for a description of this minor-mode.
+See the command `global-hi-lock-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `global-hi-lock-mode'.")
(defvar global-hl-line-mode nil "\
Non-nil if Global-Hl-Line mode is enabled.
-See the command `global-hl-line-mode' for a description of this minor-mode.
+See the command `global-hl-line-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `global-hl-line-mode'.")
(defvar icomplete-mode nil "\
Non-nil if Icomplete mode is enabled.
-See the command `icomplete-mode' for a description of this minor-mode.
+See the command `icomplete-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `icomplete-mode'.")
;;;***
\f
;;;### (autoloads (idlwave-mode) "idlwave" "progmodes/idlwave.el"
-;;;;;; (17935 59227))
+;;;;;; (17992 30878))
;;; Generated autoloads from progmodes/idlwave.el
(autoload (quote idlwave-mode) "idlwave" "\
;;;;;; image-dired-jump-thumbnail-buffer image-dired-delete-tag
;;;;;; image-dired-tag-files image-dired-show-all-from-dir image-dired-display-thumbs
;;;;;; image-dired-dired-with-window-configuration image-dired-dired-insert-marked-thumbs)
-;;;;;; "image-dired" "image-dired.el" (17963 26200))
+;;;;;; "image-dired" "image-dired.el" (17992 30877))
;;; Generated autoloads from image-dired.el
(autoload (quote image-dired-dired-insert-marked-thumbs) "image-dired" "\
(defvar auto-image-file-mode nil "\
Non-nil if Auto-Image-File mode is enabled.
-See the command `auto-image-file-mode' for a description of this minor-mode.
+See the command `auto-image-file-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `auto-image-file-mode'.")
;;;### (autoloads (Info-speedbar-browser Info-goto-emacs-key-command-node
;;;;;; Info-goto-emacs-command-node Info-mode info-apropos Info-index
;;;;;; Info-directory Info-on-current-buffer info-standalone info-emacs-manual
-;;;;;; info info-other-window) "info" "info.el" (17964 52883))
+;;;;;; info info-other-window) "info" "info.el" (18006 55795))
;;; Generated autoloads from info.el
(autoload (quote info-other-window) "info" "\
;;;### (autoloads (iso-cvt-define-menu iso-cvt-write-only iso-cvt-read-only
;;;;;; iso-sgml2iso iso-iso2sgml iso-iso2duden iso-iso2gtex iso-gtex2iso
;;;;;; iso-tex2iso iso-iso2tex iso-german iso-spanish) "iso-cvt"
-;;;;;; "international/iso-cvt.el" (17842 54888))
+;;;;;; "international/iso-cvt.el" (17992 30878))
;;; Generated autoloads from international/iso-cvt.el
(autoload (quote iso-spanish) "iso-cvt" "\
(autoload (quote iso-cvt-read-only) "iso-cvt" "\
Warn that format is read-only.
-\(fn)" t nil)
+\(fn &rest IGNORE)" t nil)
(autoload (quote iso-cvt-write-only) "iso-cvt" "\
Warn that format is write-only.
-\(fn)" t nil)
+\(fn &rest IGNORE)" t nil)
(autoload (quote iso-cvt-define-menu) "iso-cvt" "\
Add submenus to the File menu, to convert to and from various formats.
;;;;;; ispell-region ispell-change-dictionary ispell-kill-ispell
;;;;;; ispell-help ispell-pdict-save ispell-word ispell-local-dictionary-alist
;;;;;; ispell-personal-dictionary) "ispell" "textmodes/ispell.el"
-;;;;;; (17921 16827))
+;;;;;; (18006 55797))
;;; Generated autoloads from textmodes/ispell.el
(put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive))))
(defvar iswitchb-mode nil "\
Non-nil if Iswitchb mode is enabled.
-See the command `iswitchb-mode' for a description of this minor-mode.
+See the command `iswitchb-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `iswitchb-mode'.")
;;;***
\f
;;;### (autoloads (locate-with-filter locate locate-ls-subdir-switches)
-;;;;;; "locate" "locate.el" (17965 12050))
+;;;;;; "locate" "locate.el" (17992 30877))
;;; Generated autoloads from locate.el
(defvar locate-ls-subdir-switches "-al" "\
;;;***
\f
-;;;### (autoloads (log-edit) "log-edit" "log-edit.el" (17842 58279))
+;;;### (autoloads (log-edit) "log-edit" "log-edit.el" (18010 5298))
;;; Generated autoloads from log-edit.el
(autoload (quote log-edit) "log-edit" "\
;;;***
\f
-;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (17842
-;;;;;; 58279))
+;;;### (autoloads (longlines-mode) "longlines" "longlines.el" (17992
+;;;;;; 30877))
;;; Generated autoloads from longlines.el
(autoload (quote longlines-mode) "longlines" "\
;;;***
\f
;;;### (autoloads (ls-lisp-support-shell-wildcards) "ls-lisp" "ls-lisp.el"
-;;;;;; (17851 20943))
+;;;;;; (18006 55796))
;;; Generated autoloads from ls-lisp.el
(defvar ls-lisp-support-shell-wildcards t "\
;;;***
\f
;;;### (autoloads (define-mail-abbrev build-mail-abbrevs mail-abbrevs-setup)
-;;;;;; "mailabbrev" "mail/mailabbrev.el" (17842 55035))
+;;;;;; "mailabbrev" "mail/mailabbrev.el" (17992 30878))
;;; Generated autoloads from mail/mailabbrev.el
(autoload (quote mail-abbrevs-setup) "mailabbrev" "\
;;;***
\f
-;;;### (autoloads (man-follow man) "man" "man.el" (17925 15265))
+;;;### (autoloads (man-follow man) "man" "man.el" (17992 30877))
;;; Generated autoloads from man.el
(defalias (quote manual-entry) (quote man))
(defvar menu-bar-mode nil "\
Non-nil if Menu-Bar mode is enabled.
-See the command `menu-bar-mode' for a description of this minor-mode.
+See the command `menu-bar-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `menu-bar-mode'.")
;;;;;; message-cite-function message-yank-prefix message-citation-line-function
;;;;;; message-send-mail-function message-user-organization-file
;;;;;; message-signature-separator message-from-style) "message"
-;;;;;; "gnus/message.el" (17949 41467))
+;;;;;; "gnus/message.el" (18010 19867))
;;; Generated autoloads from gnus/message.el
(defvar message-from-style (quote default) "\
(defvar minibuffer-electric-default-mode nil "\
Non-nil if Minibuffer-Electric-Default mode is enabled.
-See the command `minibuffer-electric-default-mode' for a description of this minor-mode.
+See the command `minibuffer-electric-default-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `minibuffer-electric-default-mode'.")
(defvar mouse-sel-mode nil "\
Non-nil if Mouse-Sel mode is enabled.
-See the command `mouse-sel-mode' for a description of this minor-mode.
+See the command `mouse-sel-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `mouse-sel-mode'.")
;;;***
\f
-;;;### (autoloads (msb-mode) "msb" "msb.el" (17842 58279))
+;;;### (autoloads (msb-mode) "msb" "msb.el" (18006 55796))
;;; Generated autoloads from msb.el
(defvar msb-mode nil "\
Non-nil if Msb mode is enabled.
-See the command `msb-mode' for a description of this minor-mode.
+See the command `msb-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `msb-mode'.")
(defvar mouse-wheel-mode nil "\
Non-nil if Mouse-Wheel mode is enabled.
-See the command `mouse-wheel-mode' for a description of this minor-mode.
+See the command `mouse-wheel-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `mouse-wheel-mode'.")
;;;;;; uncomment-region comment-kill comment-set-column comment-indent
;;;;;; comment-indent-default comment-normalize-vars comment-multi-line
;;;;;; comment-padding comment-style comment-column) "newcomment"
-;;;;;; "newcomment.el" (17936 9617))
+;;;;;; "newcomment.el" (17992 30877))
;;; Generated autoloads from newcomment.el
(defalias (quote indent-for-comment) (quote comment-indent))
;;;***
\f
;;;### (autoloads (nndiary-generate-nov-databases) "nndiary" "gnus/nndiary.el"
-;;;;;; (17842 54741))
+;;;;;; (17992 30878))
;;; Generated autoloads from gnus/nndiary.el
(autoload (quote nndiary-generate-nov-databases) "nndiary" "\
;;;***
\f
-;;;### (autoloads (show-paren-mode) "paren" "paren.el" (17960 50513))
+;;;### (autoloads (show-paren-mode) "paren" "paren.el" (18016 8765))
;;; Generated autoloads from paren.el
(defvar show-paren-mode nil "\
Non-nil if Show-Paren mode is enabled.
-See the command `show-paren-mode' for a description of this minor-mode.
+See the command `show-paren-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `show-paren-mode'.")
(defvar pc-selection-mode nil "\
Non-nil if Pc-Selection mode is enabled.
-See the command `pc-selection-mode' for a description of this minor-mode.
+See the command `pc-selection-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `pc-selection-mode'.")
\f
;;;### (autoloads (cvs-dired-use-hook cvs-dired-action cvs-status
;;;;;; cvs-update cvs-examine cvs-quickdir cvs-checkout) "pcvs"
-;;;;;; "pcvs.el" (17842 58279))
+;;;;;; "pcvs.el" (18006 55796))
;;; Generated autoloads from pcvs.el
(autoload (quote cvs-checkout) "pcvs" "\
(defvar cvs-dired-use-hook (quote (4)) "\
Whether or not opening a CVS directory should run PCL-CVS.
-nil means never do it.
+A value of nil means never do it.
ALWAYS means to always do it unless a prefix argument is given to the
command that prompted the opening of the directory.
Anything else means to do it only if the prefix arg is equal to this value.")
;;;;;; pr-ps-buffer-print pr-ps-buffer-using-ghostscript pr-ps-buffer-preview
;;;;;; pr-ps-directory-ps-print pr-ps-directory-print pr-ps-directory-using-ghostscript
;;;;;; pr-ps-directory-preview pr-interface) "printing" "printing.el"
-;;;;;; (17866 8704))
+;;;;;; (18006 55796))
;;; Generated autoloads from printing.el
(autoload (quote pr-interface) "printing" "\
C-u 2 M-x pr-ps-fast-fire RET
The command prompts the user for a N-UP value, then for a current
PostScript printer and, finally, for a file name. Then change the active
- printer to that choosen by user and saves the PostScript image in
+ printer to that chosen by user and saves the PostScript image in
that file instead of sending it to the printer.
If it's an integer greater or equal to 2, the command prompts the user for a
current PostScript printer and for a file name. Then change the active
- printer to that choosen by user and saves the PostScript image in that file
+ printer to that chosen by user and saves the PostScript image in that file
instead of sending it to the printer.
If it's a symbol which it's defined in `pr-ps-printer-alist', it's the new
;;;;;; ps-spool-region ps-spool-buffer-with-faces ps-spool-buffer
;;;;;; ps-print-region-with-faces ps-print-region ps-print-buffer-with-faces
;;;;;; ps-print-buffer ps-print-customize ps-print-color-p ps-paper-type
-;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (17900
-;;;;;; 43896))
+;;;;;; ps-page-dimensions-database) "ps-print" "ps-print.el" (18006
+;;;;;; 55796))
;;; Generated autoloads from ps-print.el
(defvar ps-page-dimensions-database (list (list (quote a4) (/ (* 72 21.0) 2.54) (/ (* 72 29.7) 2.54) "A4") (list (quote a3) (/ (* 72 29.7) 2.54) (/ (* 72 42.0) 2.54) "A3") (list (quote letter) (* 72 8.5) (* 72 11.0) "Letter") (list (quote legal) (* 72 8.5) (* 72 14.0) "Legal") (list (quote letter-small) (* 72 7.68) (* 72 10.16) "LetterSmall") (list (quote tabloid) (* 72 11.0) (* 72 17.0) "Tabloid") (list (quote ledger) (* 72 17.0) (* 72 11.0) "Ledger") (list (quote statement) (* 72 5.5) (* 72 8.5) "Statement") (list (quote executive) (* 72 7.5) (* 72 10.0) "Executive") (list (quote a4small) (* 72 7.47) (* 72 10.85) "A4Small") (list (quote b4) (* 72 10.125) (* 72 14.33) "B4") (list (quote b5) (* 72 7.16) (* 72 10.125) "B5")) "\
\(fn FACE-EXTENSION &optional MERGE-P ALIST-SYM)" nil nil)
+;;;***
+\f
+;;;### (autoloads (jython-mode python-mode run-python) "python" "progmodes/python.el"
+;;;;;; (17992 30878))
+;;; Generated autoloads from progmodes/python.el
+
+(add-to-list (quote interpreter-mode-alist) (quote ("jython" . jython-mode)))
+
+(add-to-list (quote interpreter-mode-alist) (quote ("python" . python-mode)))
+
+(add-to-list (quote auto-mode-alist) (quote ("\\.py\\'" . python-mode)))
+
+(autoload (quote run-python) "python" "\
+Run an inferior Python process, input and output via buffer *Python*.
+CMD is the Python command to run. NOSHOW non-nil means don't show the
+buffer automatically.
+
+Normally, if there is a process already running in `python-buffer',
+switch to that buffer. Interactively, a prefix arg allows you to edit
+the initial command line (default is `python-command'); `-i' etc. args
+will be added to this as appropriate. A new process is started if:
+one isn't running attached to `python-buffer', or interactively the
+default `python-command', or argument NEW is non-nil. See also the
+documentation for `python-buffer'.
+
+Runs the hook `inferior-python-mode-hook' (after the
+`comint-mode-hook' is run). (Type \\[describe-mode] in the process
+buffer for a list of commands.)
+
+\(fn &optional CMD NOSHOW NEW)" t nil)
+
+(autoload (quote python-mode) "python" "\
+Major mode for editing Python files.
+Font Lock mode is currently required for correct parsing of the source.
+See also `jython-mode', which is actually invoked if the buffer appears to
+contain Jython code. See also `run-python' and associated Python mode
+commands for running Python under Emacs.
+
+The Emacs commands which work with `defun's, e.g. \\[beginning-of-defun], deal
+with nested `def' and `class' blocks. They take the innermost one as
+current without distinguishing method and class definitions. Used multiple
+times, they move over others at the same indentation level until they reach
+the end of definitions at that level, when they move up a level.
+\\<python-mode-map>
+Colon is electric: it outdents the line if appropriate, e.g. for
+an else statement. \\[python-backspace] at the beginning of an indented statement
+deletes a level of indentation to close the current block; otherwise it
+deletes a character backward. TAB indents the current line relative to
+the preceding code. Successive TABs, with no intervening command, cycle
+through the possibilities for indentation on the basis of enclosing blocks.
+
+\\[fill-paragraph] fills comments and multi-line strings appropriately, but has no
+effect outside them.
+
+Supports Eldoc mode (only for functions, using a Python process),
+Info-Look and Imenu. In Outline minor mode, `class' and `def'
+lines count as headers. Symbol completion is available in the
+same way as in the Python shell using the `rlcompleter' module
+and this is added to the Hippie Expand functions locally if
+Hippie Expand mode is turned on. Completion of symbols of the
+form x.y only works if the components are literal
+module/attribute names, not variables. An abbrev table is set up
+with skeleton expansions for compound statement templates.
+
+\\{python-mode-map}
+
+\(fn)" t nil)
+
+(autoload (quote jython-mode) "python" "\
+Major mode for editing Jython files.
+Like `python-mode', but sets up parameters for Jython subprocesses.
+Runs `jython-mode-hook' after `python-mode-hook'.
+
+\(fn)" t nil)
+
;;;***
\f
;;;### (autoloads (quoted-printable-decode-region) "qp" "gnus/qp.el"
;;;***
\f
;;;### (autoloads (rcirc-track-minor-mode rcirc-connect rcirc) "rcirc"
-;;;;;; "net/rcirc.el" (17907 1946))
+;;;;;; "net/rcirc.el" (18006 55797))
;;; Generated autoloads from net/rcirc.el
(autoload (quote rcirc) "rcirc" "\
(defvar rcirc-track-minor-mode nil "\
Non-nil if Rcirc-Track minor mode is enabled.
-See the command `rcirc-track-minor-mode' for a description of this minor-mode.
+See the command `rcirc-track-minor-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `rcirc-track-minor-mode'.")
(defvar recentf-mode nil "\
Non-nil if Recentf mode is enabled.
-See the command `recentf-mode' for a description of this minor-mode.
+See the command `recentf-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `recentf-mode'.")
(defvar global-reveal-mode nil "\
Non-nil if Global-Reveal mode is enabled.
-See the command `global-reveal-mode' for a description of this minor-mode.
+See the command `global-reveal-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `global-reveal-mode'.")
;;;;;; rmail-mail-new-frame rmail-primary-inbox-list rmail-delete-after-output
;;;;;; rmail-highlight-face rmail-highlighted-headers rmail-retry-ignored-headers
;;;;;; rmail-displayed-headers rmail-ignored-headers rmail-dont-reply-to-names
-;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (17938
-;;;;;; 22875))
+;;;;;; rmail-movemail-variant-p) "rmail" "mail/rmail.el" (18006
+;;;;;; 55797))
;;; Generated autoloads from mail/rmail.el
(autoload (quote rmail-movemail-variant-p) "rmail" "\
;;;***
\f
-;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (17842
-;;;;;; 54152))
+;;;### (autoloads (rx rx-to-string) "rx" "emacs-lisp/rx.el" (18011
+;;;;;; 44080))
;;; Generated autoloads from emacs-lisp/rx.el
(autoload (quote rx-to-string) "rx" "\
matches the empty string, but only at point.
`word-start', `bow'
- matches the empty string, but only at the beginning or end of a
- word.
+ matches the empty string, but only at the beginning of a word.
`word-end', `eow'
matches the empty string, but only at the end of a word.
matches the empty string, but not at the beginning or end of a
word.
+`symbol-start'
+ matches the empty string, but only at the beginning of a symbol.
+
+`symbol-end'
+ matches the empty string, but only at the end of a symbol.
+
`digit', `numeric', `num'
matches 0 through 9.
(defvar scroll-all-mode nil "\
Non-nil if Scroll-All mode is enabled.
-See the command `scroll-all-mode' for a description of this minor-mode.
+See the command `scroll-all-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `scroll-all-mode'.")
(defvar server-mode nil "\
Non-nil if Server mode is enabled.
-See the command `server-mode' for a description of this minor-mode.
+See the command `server-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `server-mode'.")
;;;***
\f
;;;### (autoloads (html-mode sgml-mode) "sgml-mode" "textmodes/sgml-mode.el"
-;;;;;; (17887 16434))
+;;;;;; (18010 58080))
;;; Generated autoloads from textmodes/sgml-mode.el
(autoload (quote sgml-mode) "sgml-mode" "\
;;;***
\f
;;;### (autoloads (sh-mode) "sh-script" "progmodes/sh-script.el"
-;;;;;; (17842 56332))
+;;;;;; (17992 30878))
;;; Generated autoloads from progmodes/sh-script.el
(put 'sh-shell 'safe-local-variable 'symbolp)
;;;***
\f
-;;;### (autoloads nil "simple" "simple.el" (17965 11665))
+;;;### (autoloads nil "simple" "simple.el" (18009 38727))
;;; Generated autoloads from simple.el
(put 'fill-prefix 'safe-local-variable 'string-or-null-p)
(defvar strokes-mode nil "\
Non-nil if Strokes mode is enabled.
-See the command `strokes-mode' for a description of this minor-mode.
+See the command `strokes-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `strokes-mode'.")
;;;***
\f
-;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (17963 25911))
+;;;### (autoloads (t-mouse-mode) "t-mouse" "t-mouse.el" (18006 55796))
;;; Generated autoloads from t-mouse.el
(defvar t-mouse-mode nil "\
Non-nil if T-Mouse mode is enabled.
-See the command `t-mouse-mode' for a description of this minor-mode.
+See the command `t-mouse-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `t-mouse-mode'.")
(custom-autoload (quote t-mouse-mode) "t-mouse" nil)
(autoload (quote t-mouse-mode) "t-mouse" "\
-Toggle t-mouse mode.
+Toggle t-mouse mode to use the mouse in Linux consoles.
With prefix arg, turn t-mouse mode on iff arg is positive.
-Turn it on to use Emacs mouse commands, and off to use t-mouse commands.
+This allows the use of the mouse when operating on a Linux console, in the
+same way as you can use the mouse under X11.
+It requires the `mev' program, part of the `gpm' utilities.
\(fn &optional ARG)" t nil)
;;;;;; table-recognize table-insert-row-column table-insert-column
;;;;;; table-insert-row table-insert table-point-left-cell-hook
;;;;;; table-point-entered-cell-hook table-load-hook table-cell-map-hook)
-;;;;;; "table" "textmodes/table.el" (17842 58276))
+;;;;;; "table" "textmodes/table.el" (18012 17784))
;;; Generated autoloads from textmodes/table.el
(defvar table-cell-map-hook nil "\
;;;***
\f
-;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (17842 58278))
+;;;### (autoloads (tar-mode) "tar-mode" "tar-mode.el" (18010 5426))
;;; Generated autoloads from tar-mode.el
(autoload (quote tar-mode) "tar-mode" "\
;;;;;; tex-start-commands tex-start-options slitex-run-command latex-run-command
;;;;;; tex-run-command tex-offer-save tex-main-file tex-first-line-header-regexp
;;;;;; tex-directory tex-shell-file-name) "tex-mode" "textmodes/tex-mode.el"
-;;;;;; (17842 58276))
+;;;;;; (17992 30878))
;;; Generated autoloads from textmodes/tex-mode.el
(defvar tex-shell-file-name nil "\
;;;***
\f
;;;### (autoloads (display-time-mode display-time display-time-day-and-date)
-;;;;;; "time" "time.el" (17842 58278))
+;;;;;; "time" "time.el" (18006 55796))
;;; Generated autoloads from time.el
(defvar display-time-day-and-date nil "\
(defvar display-time-mode nil "\
Non-nil if Display-Time mode is enabled.
-See the command `display-time-mode' for a description of this minor-mode.
+See the command `display-time-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `display-time-mode'.")
;;;;;; timeclock-workday-remaining-string timeclock-reread-log timeclock-query-out
;;;;;; timeclock-change timeclock-status-string timeclock-out timeclock-in
;;;;;; timeclock-modeline-display) "timeclock" "calendar/timeclock.el"
-;;;;;; (17842 53792))
+;;;;;; (17992 30878))
;;; Generated autoloads from calendar/timeclock.el
(autoload (quote timeclock-modeline-display) "timeclock" "\
;;;***
\f
;;;### (autoloads (tpu-edt-on tpu-edt-mode) "tpu-edt" "emulation/tpu-edt.el"
-;;;;;; (17842 54264))
+;;;;;; (18006 55796))
;;; Generated autoloads from emulation/tpu-edt.el
(defvar tpu-edt-mode nil "\
Non-nil if Tpu-Edt mode is enabled.
-See the command `tpu-edt-mode' for a description of this minor-mode.
+See the command `tpu-edt-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `tpu-edt-mode'.")
;;;***
\f
-;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (17892
-;;;;;; 62683))
+;;;### (autoloads (help-with-tutorial) "tutorial" "tutorial.el" (18006
+;;;;;; 55796))
;;; Generated autoloads from tutorial.el
(autoload (quote help-with-tutorial) "tutorial" "\
(defvar url-handler-mode nil "\
Non-nil if Url-Handler mode is enabled.
-See the command `url-handler-mode' for a description of this minor-mode.
+See the command `url-handler-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `url-handler-mode'.")
;;;***
\f
;;;### (autoloads (url-mailto url-mail) "url-mailto" "url/url-mailto.el"
-;;;;;; (17842 56569))
+;;;;;; (18012 18089))
;;; Generated autoloads from url/url-mailto.el
(autoload (quote url-mail) "url-mailto" "\
;;;;;; vc-directory vc-merge vc-insert-headers vc-version-other-window
;;;;;; vc-diff vc-register vc-next-action vc-do-command edit-vc-file
;;;;;; with-vc-file vc-branch-part vc-trunk-p vc-before-checkin-hook
-;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc.el" (17842 58278))
+;;;;;; vc-checkin-hook vc-checkout-hook) "vc" "vc.el" (17992 30877))
;;; Generated autoloads from vc.el
(defvar vc-checkout-hook nil "\
\f
;;;### (autoloads (View-exit-and-edit view-mode-enter view-mode view-buffer-other-frame
;;;;;; view-buffer-other-window view-buffer view-file-other-frame
-;;;;;; view-file-other-window view-file) "view" "view.el" (17930
-;;;;;; 34071))
+;;;;;; view-file-other-window view-file) "view" "view.el" (18006
+;;;;;; 55796))
;;; Generated autoloads from view.el
(defvar view-mode nil "\
(defvar which-function-mode nil "\
Non-nil if Which-Function mode is enabled.
-See the command `which-function-mode' for a description of this minor-mode.
+See the command `which-function-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `which-function-mode'.")
(defvar whitespace-global-mode nil "\
Non-nil if Whitespace-Global mode is enabled.
-See the command `whitespace-global-mode' for a description of this minor-mode.
+See the command `whitespace-global-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `whitespace-global-mode'.")
;;;***
\f
-;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (17938
-;;;;;; 61442))
+;;;### (autoloads (xterm-mouse-mode) "xt-mouse" "xt-mouse.el" (18007
+;;;;;; 39657))
;;; Generated autoloads from xt-mouse.el
(defvar xterm-mouse-mode nil "\
Non-nil if Xterm-Mouse mode is enabled.
-See the command `xterm-mouse-mode' for a description of this minor-mode.
+See the command `xterm-mouse-mode' for a description of this minor mode.
Setting this variable directly does not take effect;
either customize it (see the info node `Easy Customization')
or call the function `xterm-mouse-mode'.")
;;;;;; "url/url-vars.el" "url/vc-dav.el" "vc-hooks.el" "vcursor.el"
;;;;;; "version.el" "vms-patch.el" "vmsproc.el" "vt-control.el"
;;;;;; "vt100-led.el" "w32-fns.el" "w32-vars.el" "widget.el" "window.el"
-;;;;;; "x-dnd.el") (17965 26976 559735))
+;;;;;; "x-dnd.el") (18016 63490 111736))
;;;***
\f
;; Only for GNU locate
(defun locate-in-alternate-database (search-string database)
- "Run the GNU locate command, using an alternate database."
+ "Run the GNU locate program, using an alternate database.
+
+This command only works if you use GNU locate. It does not work
+properly if `locate-prompt-for-command' is set to t. In that
+case, you can just run the regular `locate' command and specify
+the database on the command line."
(interactive
(list
(progn
(point))
(if (re-search-forward "^[ \t\n]*$" nil t)
(match-beginning 0)
- (point)))))
+ (point-max)))))
(defun log-edit-changelog-subparagraph ()
"Return the bounds of the ChangeLog subparagraph containing point.
(t '(links uid gid))) ; GNU ls
"*A list of optional file attributes that ls-lisp should display.
It should contain none or more of the symbols: links, uid, gid.
-nil (or an empty list) means display none of them.
+A value of nil (or an empty list) means display none of them.
Concepts come from UNIX: `links' means count of names associated with
the file\; `uid' means user (owner) identifier\; `gid' means group
;; the usual syntax table.
(or (and (integerp last-command-char)
+ ;; Some commands such as M-> may want to expand first.
+ (equal this-command 'self-insert)
(or (eq (char-syntax last-command-char) ?_)
;; Don't expand on @.
(memq last-command-char '(?@ ?. ?% ?! ?_ ?-))))
(base64-header-field-end
(save-excursion
(goto-char start)
+ ;; Don't try to decode non-text data.
(and (re-search-forward
- "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
+ "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
header-end t)
- ;; Don't try to decode non-text data.
+ (goto-char start)
(re-search-forward
- "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
+ "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
header-end t)))))
(if quoted-printable-header-field-end
(save-excursion
header-end t)))
(base64-header-field-end
(and
+ ;; Don't decode non-text data.
(save-excursion
(re-search-forward
- "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
+ "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
header-end t))
- ;; Don't decode non-text data.
(save-excursion
(re-search-forward
- "^content-type:\\(\n?[\t ]\\)\\(text\\|message\\)/"
+ "^content-transfer-encoding:\\(\n?[\t ]\\)*base64\\(\n?[\t ]\\)*"
header-end t))))
(size
;; Get the numeric value from the Content-Length field.
$(lisp)/mh-e/mh-tool-bar.el $(lisp)/mh-e/mh-utils.el \
$(lisp)/mh-e/mh-xface.el
+# See the commentary for autoloads above for why we use ./mh-e below
+# instead of $(lisp)/mh-e.
mh-autoloads: $(lisp)/mh-e/mh-loaddefs.el
$(lisp)/mh-e/mh-loaddefs.el: $(MH_E_SRC)
$(MAKE) $(MFLAGS) pre-mh-loaddefs.el-$(SHELLTYPE)
--eval "(setq find-file-suppress-same-file-warnings t)" \
--eval "(setq make-backup-files nil)" \
-f w32-batch-update-autoloads \
- "$(lisp)/mh-e/mh-loaddefs.el" $(lisp)/mh-e
+ "$(lisp)/mh-e/mh-loaddefs.el" ./mh-e
pre-mh-loaddefs.el-SH:
echo ";;; mh-loaddefs.el --- automatically extracted autoloads" > $@
`save-match-data'.
The categories are sorted by MENU-SORT-KEY. Smaller keys are on top.
-nil means don't display this menu.
+A value of nil means don't display this menu.
MENU-TITLE is really a format. If you add %d in it, the %d is
replaced with the number of items in that menu.
(defcustom rcirc-fill-column nil
"*Column beyond which automatic line-wrapping should happen.
-If nil, use value of `fill-column'. If 'frame-width, use the
-maximum frame width."
+If nil, use value of `fill-column'.
+If `window-width', use the window's width as maximum.
+If `frame-width', use the frame's width as maximum."
:type '(choice (const :tag "Value of `fill-column'")
+ (const :tag "Full window width" window-width)
(const :tag "Full frame width" frame-width)
(integer :tag "Number of columns"))
:group 'rcirc)
:group 'rcirc)
(defcustom rcirc-scroll-show-maximum-output t
- "*If non-nil, scroll buffer to keep the point at the bottom of
-the window."
+ "*If non-nil, scroll buffer to keep the point at the bottom of the window."
:type 'boolean
:group 'rcirc)
"List of urls seen in the current buffer.")
(put 'rcirc-urls 'permanent-local t)
-(defvar rcirc-timeout-seconds 60
+(defvar rcirc-timeout-seconds 600
"Kill connection after this many seconds if there is no activity.")
(defconst rcirc-id-string (concat "rcirc on GNU Emacs " emacs-version))
(make-string (- text-start fill-start) ?\s)))
(fill-column (cond ((eq rcirc-fill-column 'frame-width)
(1- (frame-width)))
+ ((eq rcirc-fill-column 'window-width)
+ (1- (window-width)))
(rcirc-fill-column
rcirc-fill-column)
(t fill-column))))
(let ((oldpos (point))
(dir (cond ((eq (syntax-class (syntax-after (1- (point)))) 5) -1)
((eq (syntax-class (syntax-after (point))) 4) 1)))
- (window-start (window-start))
pos mismatch face)
;;
;; Find the other end of the sexp.
;;
;; Always set the overlay face, since it varies.
(overlay-put show-paren-overlay 'priority show-paren-priority)
- (overlay-put show-paren-overlay 'face face))
- ;; If there are continued lines, the above operations can
- ;; force redisplay to recenter the window (since there is no
- ;; way for it to know that the overlay changes to the buffer
- ;; are harmless). So reset the window-start.
- (unless (window-minibuffer-p)
- (set-window-start (selected-window) window-start)))
+ (overlay-put show-paren-overlay 'face face)))
;; show-paren-mode is nil in this buffer.
(and show-paren-overlay
(delete-overlay show-paren-overlay))
;;;###autoload
(defcustom cvs-dired-use-hook '(4)
"Whether or not opening a CVS directory should run PCL-CVS.
-nil means never do it.
+A value of nil means never do it.
ALWAYS means to always do it unless a prefix argument is given to the
command that prompted the opening of the directory.
Anything else means to do it only if the prefix arg is equal to this value."
C-u 2 M-x pr-ps-fast-fire RET
The command prompts the user for a N-UP value, then for a current
PostScript printer and, finally, for a file name. Then change the active
- printer to that choosen by user and saves the PostScript image in
+ printer to that chosen by user and saves the PostScript image in
that file instead of sending it to the printer.
If it's an integer greater or equal to 2, the command prompts the user for a
current PostScript printer and for a file name. Then change the active
- printer to that choosen by user and saves the PostScript image in that file
+ printer to that chosen by user and saves the PostScript image in that file
instead of sending it to the printer.
If it's a symbol which it's defined in `pr-ps-printer-alist', it's the new
(setq lim (max (point-min) (1- (point))))
;; Look for the latest `c-type' property before end1
- (when (and (> end1 1)
+ (when (and (> end1 (point-min))
(setq type-pos
(if (get-text-property (1- end1) 'c-type)
end1
process-status exit-status msg)
(cons msg exit-status)))
(omax (point-max))
- (opoint (point)))
+ (opoint (point))
+ (cur-buffer (current-buffer)))
;; Record where we put the message, so we can ignore it later on.
(goto-char omax)
(insert ?\n mode-name " " (car status))
(goto-char opoint))
(with-no-warnings
(if compilation-finish-function
- (funcall compilation-finish-function (current-buffer) msg)))
- (let ((functions compilation-finish-functions))
- (while functions
- (funcall (car functions) (current-buffer) msg)
- (setq functions (cdr functions))))))
+ (funcall compilation-finish-function cur-buffer msg)))
+ (run-hook-with-args 'compilation-finish-functions cur-buffer msg)))
;; Called when compilation process changes state.
(defun compilation-sentinel (proc msg)
:visible (and (not gud-running)
(eq gud-minor-mode 'gdba)))
([stop] menu-item "Stop" gud-stop-subjob
- :visible (or (not (eq gud-minor-mode 'gdba))
+ :visible (or (not (memq gud-minor-mode '(gdba pdb)))
(and gud-running
(eq gud-minor-mode 'gdba))))
([until] menu-item "Continue to selection" gud-until
;; Reindent new line
(idlwave-indent-line)))
-(defun idlwave-beginning-of-subprogram ()
- "Moves point to the beginning of the current program unit."
+(defun idlwave-beginning-of-subprogram (&optional nomark)
+ "Moves point to the beginning of the current program unit.
+If NOMARK is non-nil, do not push mark."
(interactive)
- (idlwave-find-key idlwave-begin-unit-reg -1))
+ (idlwave-find-key idlwave-begin-unit-reg -1 nomark))
-(defun idlwave-end-of-subprogram ()
- "Moves point to the start of the next program unit."
+(defun idlwave-end-of-subprogram (&optional nomark)
+ "Moves point to the start of the next program unit.
+If NOMARK is non-nil, do not push mark."
(interactive)
(idlwave-end-of-statement)
- (idlwave-find-key idlwave-end-unit-reg 1))
+ (idlwave-find-key idlwave-end-unit-reg 1 nomark))
(defun idlwave-mark-statement ()
"Mark current IDL statement."
"Return (NAME TYPE CLASS) of current routine."
(idlwave-routines)
(save-excursion
- (idlwave-beginning-of-subprogram)
+ (idlwave-beginning-of-subprogram 'nomark)
(if (looking-at "[ \t]*\\<\\(pro\\|function\\)\\>\\s-+\\(\\([a-zA-Z0-9$_]+\\)::\\)?\\([a-zA-Z0-9$_]+\\)")
(let* ((type (if (string= (downcase (match-string 1)) "pro")
'pro 'function))
--- /dev/null
+;;; python.el --- silly walks for Python
+
+;; Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+
+;; Author: Dave Love <fx@gnu.org>
+;; Maintainer: FSF
+;; Created: Nov 2003
+;; Keywords: languages
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Major mode for editing Python, with support for inferior processes.
+
+;; There is another Python mode, python-mode.el, used by XEmacs and
+;; maintained with Python. That isn't covered by an FSF copyright
+;; assignment, unlike this code, and seems not to be well-maintained
+;; for Emacs (though I've submitted fixes). This mode is rather
+;; simpler and is better in other ways. In particular, using the
+;; syntax functions with text properties maintained by font-lock makes
+;; it more correct with arbitrary string and comment contents.
+
+;; This doesn't implement all the facilities of python-mode.el. Some
+;; just need doing, e.g. catching exceptions in the inferior Python
+;; buffer (but see M-x pdb for debugging). [Actually, the use of
+;; `compilation-shell-minor-mode' now is probably enough for that.]
+;; Others don't seem appropriate. For instance,
+;; `forward-into-nomenclature' should be done separately, since it's
+;; not specific to Python, and I've installed a minor mode to do the
+;; job properly in Emacs 23. [CC mode 5.31 contains an incompatible
+;; feature, `c-subword-mode' which is intended to have a similar
+;; effect, but actually only affects word-oriented keybindings.]
+
+;; Other things seem more natural or canonical here, e.g. the
+;; {beginning,end}-of-defun implementation dealing with nested
+;; definitions, and the inferior mode following `cmuscheme'. (The
+;; inferior mode can find the source of errors from
+;; `python-send-region' & al via `compilation-shell-minor-mode'.)
+;; There is (limited) symbol completion using lookup in Python and
+;; Eldoc support also using the inferior process. Successive TABs
+;; cycle between possible indentations for the line.
+
+;; Even where it has similar facilities, this mode is incompatible
+;; with python-mode.el in some respects. For instance, various key
+;; bindings are changed to obey Emacs conventions.
+
+;; TODO: See various Fixmes below.
+
+;;; Code:
+
+(eval-when-compile
+ (require 'cl)
+ (require 'compile)
+ (require 'comint)
+ (require 'hippie-exp))
+
+(autoload 'comint-mode "comint")
+
+(defgroup python nil
+ "Silly walks in the Python language."
+ :group 'languages
+ :version "22.1"
+ :link '(emacs-commentary-link "python"))
+\f
+;;;###autoload
+(add-to-list 'interpreter-mode-alist '("jython" . jython-mode))
+;;;###autoload
+(add-to-list 'interpreter-mode-alist '("python" . python-mode))
+;;;###autoload
+(add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode))
+\f
+;;;; Font lock
+
+(defvar python-font-lock-keywords
+ `(,(rx symbol-start
+ ;; From v 2.4 reference.
+ ;; def and class dealt with separately below
+ (or "and" "assert" "break" "continue" "del" "elif" "else"
+ "except" "exec" "finally" "for" "from" "global" "if"
+ "import" "in" "is" "lambda" "not" "or" "pass" "print"
+ "raise" "return" "try" "while" "yield"
+ ;; Future keywords
+ "as" "None" "with"
+ ;; Not real keywords, but close enough to be fontified as such
+ "self" "True" "False")
+ symbol-end)
+ ;; Definitions
+ (,(rx symbol-start (group "class") (1+ space) (group (1+ (or word ?_))))
+ (1 font-lock-keyword-face) (2 font-lock-type-face))
+ (,(rx symbol-start (group "def") (1+ space) (group (1+ (or word ?_))))
+ (1 font-lock-keyword-face) (2 font-lock-function-name-face))
+ ;; Top-level assignments are worth highlighting.
+ (,(rx line-start (group (1+ (or word ?_))) (0+ space) "=")
+ (1 font-lock-variable-name-face))
+ (,(rx "@" (1+ (or word ?_))) ; decorators
+ (0 font-lock-preprocessor-face))))
+
+(defconst python-font-lock-syntactic-keywords
+ ;; Make outer chars of matching triple-quote sequences into generic
+ ;; string delimiters. Fixme: Is there a better way?
+ `((,(rx (or line-start buffer-start
+ (not (syntax escape))) ; avoid escaped leading quote
+ (group (optional (any "uUrR"))) ; prefix gets syntax property
+ (optional (any "rR")) ; possible second prefix
+ (group (syntax string-quote)) ; maybe gets property
+ (backref 2) ; per first quote
+ (group (backref 2))) ; maybe gets property
+ (1 (python-quote-syntax 1))
+ (2 (python-quote-syntax 2))
+ (3 (python-quote-syntax 3)))
+ ;; This doesn't really help.
+;;; (,(rx (and ?\\ (group ?\n))) (1 " "))
+ ))
+
+(defun python-quote-syntax (n)
+ "Put `syntax-table' property correctly on triple quote.
+Used for syntactic keywords. N is the match number (1, 2 or 3)."
+ ;; Given a triple quote, we have to check the context to know
+ ;; whether this is an opening or closing triple or whether it's
+ ;; quoted anyhow, and should be ignored. (For that we need to do
+ ;; the same job as `syntax-ppss' to be correct and it seems to be OK
+ ;; to use it here despite initial worries.) We also have to sort
+ ;; out a possible prefix -- well, we don't _have_ to, but I think it
+ ;; should be treated as part of the string.
+
+ ;; Test cases:
+ ;; ur"""ar""" x='"' # """
+ ;; x = ''' """ ' a
+ ;; '''
+ ;; x '"""' x """ \"""" x
+ ;; Fixme: """""" goes wrong (due to syntax-ppss not getting the string
+ ;; fence context).
+ (save-excursion
+ (goto-char (match-beginning 0))
+ (cond
+ ;; Consider property for the last char if in a fenced string.
+ ((= n 3)
+ (let ((syntax (syntax-ppss)))
+ (when (eq t (nth 3 syntax)) ; after unclosed fence
+ (goto-char (nth 8 syntax)) ; fence position
+ (skip-chars-forward "uUrR") ; skip any prefix
+ ;; Is it a matching sequence?
+ (if (eq (char-after) (char-after (match-beginning 2)))
+ (eval-when-compile (string-to-syntax "|"))))))
+ ;; Consider property for initial char, accounting for prefixes.
+ ((or (and (= n 2) ; leading quote (not prefix)
+ (= (match-beginning 1) (match-end 1))) ; prefix is null
+ (and (= n 1) ; prefix
+ (/= (match-beginning 1) (match-end 1)))) ; non-empty
+ (unless (nth 3 (syntax-ppss))
+ (eval-when-compile (string-to-syntax "|"))))
+ ;; Otherwise (we're in a non-matching string) the property is
+ ;; nil, which is OK.
+ )))
+
+;; This isn't currently in `font-lock-defaults' as probably not worth
+;; it -- we basically only mess with a few normally-symbol characters.
+
+;; (defun python-font-lock-syntactic-face-function (state)
+;; "`font-lock-syntactic-face-function' for Python mode.
+;; Returns the string or comment face as usual, with side effect of putting
+;; a `syntax-table' property on the inside of the string or comment which is
+;; the standard syntax table."
+;; (if (nth 3 state)
+;; (save-excursion
+;; (goto-char (nth 8 state))
+;; (condition-case nil
+;; (forward-sexp)
+;; (error nil))
+;; (put-text-property (1+ (nth 8 state)) (1- (point))
+;; 'syntax-table (standard-syntax-table))
+;; 'font-lock-string-face)
+;; (put-text-property (1+ (nth 8 state)) (line-end-position)
+;; 'syntax-table (standard-syntax-table))
+;; 'font-lock-comment-face))
+\f
+;;;; Keymap and syntax
+
+(defvar python-mode-map
+ (let ((map (make-sparse-keymap)))
+ ;; Mostly taken from python-mode.el.
+ (define-key map ":" 'python-electric-colon)
+ (define-key map "\177" 'python-backspace)
+ (define-key map "\C-c<" 'python-shift-left)
+ (define-key map "\C-c>" 'python-shift-right)
+ (define-key map "\C-c\C-k" 'python-mark-block)
+ (define-key map "\C-c\C-n" 'python-next-statement)
+ (define-key map "\C-c\C-p" 'python-previous-statement)
+ (define-key map "\C-c\C-u" 'python-beginning-of-block)
+ (define-key map "\C-c\C-f" 'python-describe-symbol)
+ (define-key map "\C-c\C-w" 'python-check)
+ (define-key map "\C-c\C-v" 'python-check) ; a la sgml-mode
+ (define-key map "\C-c\C-s" 'python-send-string)
+ (define-key map [?\C-\M-x] 'python-send-defun)
+ (define-key map "\C-c\C-r" 'python-send-region)
+ (define-key map "\C-c\M-r" 'python-send-region-and-go)
+ (define-key map "\C-c\C-c" 'python-send-buffer)
+ (define-key map "\C-c\C-z" 'python-switch-to-python)
+ (define-key map "\C-c\C-m" 'python-load-file)
+ (define-key map "\C-c\C-l" 'python-load-file) ; a la cmuscheme
+ (substitute-key-definition 'complete-symbol 'python-complete-symbol
+ map global-map)
+ (define-key map "\C-c\C-i" 'python-find-imports)
+ (define-key map "\C-c\C-t" 'python-expand-template)
+ (easy-menu-define python-menu map "Python Mode menu"
+ `("Python"
+ :help "Python-specific Features"
+ ["Shift region left" python-shift-left :active mark-active
+ :help "Shift by a single indentation step"]
+ ["Shift region right" python-shift-right :active mark-active
+ :help "Shift by a single indentation step"]
+ "-"
+ ["Mark block" python-mark-block
+ :help "Mark innermost block around point"]
+ ["Mark def/class" mark-defun
+ :help "Mark innermost definition around point"]
+ "-"
+ ["Start of block" python-beginning-of-block
+ :help "Go to start of innermost definition around point"]
+ ["End of block" python-end-of-block
+ :help "Go to end of innermost definition around point"]
+ ["Start of def/class" beginning-of-defun
+ :help "Go to start of innermost definition around point"]
+ ["End of def/class" end-of-defun
+ :help "Go to end of innermost definition around point"]
+ "-"
+ ("Templates..."
+ :help "Expand templates for compound statements"
+ :filter (lambda (&rest junk)
+ (mapcar (lambda (elt)
+ (vector (car elt) (cdr elt) t))
+ python-skeletons))) ; defined later
+ "-"
+ ["Start interpreter" run-python
+ :help "Run `inferior' Python in separate buffer"]
+ ["Import/reload file" python-load-file
+ :help "Load into inferior Python session"]
+ ["Eval buffer" python-send-buffer
+ :help "Evaluate buffer en bloc in inferior Python session"]
+ ["Eval region" python-send-region :active mark-active
+ :help "Evaluate region en bloc in inferior Python session"]
+ ["Eval def/class" python-send-defun
+ :help "Evaluate current definition in inferior Python session"]
+ ["Switch to interpreter" python-switch-to-python
+ :help "Switch to inferior Python buffer"]
+ ["Set default process" python-set-proc
+ :help "Make buffer's inferior process the default"
+ :active (buffer-live-p python-buffer)]
+ ["Check file" python-check :help "Run pychecker"]
+ ["Debugger" pdb :help "Run pdb under GUD"]
+ "-"
+ ["Help on symbol" python-describe-symbol
+ :help "Use pydoc on symbol at point"]
+ ["Complete symbol" python-complete-symbol
+ :help "Complete (qualified) symbol before point"]
+ ["Update imports" python-find-imports
+ :help "Update list of top-level imports for completion"]))
+ map))
+;; Fixme: add toolbar stuff for useful things like symbol help, send
+;; region, at least. (Shouldn't be specific to Python, obviously.)
+;; eric has items including: (un)indent, (un)comment, restart script,
+;; run script, debug script; also things for profiling, unit testing.
+
+(defvar python-mode-syntax-table
+ (let ((table (make-syntax-table)))
+ ;; Give punctuation syntax to ASCII that normally has symbol
+ ;; syntax or has word syntax and isn't a letter.
+ (let ((symbol (string-to-syntax "_"))
+ (sst (standard-syntax-table)))
+ (dotimes (i 128)
+ (unless (= i ?_)
+ (if (equal symbol (aref sst i))
+ (modify-syntax-entry i "." table)))))
+ (modify-syntax-entry ?$ "." table)
+ (modify-syntax-entry ?% "." table)
+ ;; exceptions
+ (modify-syntax-entry ?# "<" table)
+ (modify-syntax-entry ?\n ">" table)
+ (modify-syntax-entry ?' "\"" table)
+ (modify-syntax-entry ?` "$" table)
+ table))
+\f
+;;;; Utility stuff
+
+(defsubst python-in-string/comment ()
+ "Return non-nil if point is in a Python literal (a comment or string)."
+ ;; We don't need to save the match data.
+ (nth 8 (syntax-ppss)))
+
+(defconst python-space-backslash-table
+ (let ((table (copy-syntax-table python-mode-syntax-table)))
+ (modify-syntax-entry ?\\ " " table)
+ table)
+ "`python-mode-syntax-table' with backslash given whitespace syntax.")
+
+(defun python-skip-comments/blanks (&optional backward)
+ "Skip comments and blank lines.
+BACKWARD non-nil means go backwards, otherwise go forwards.
+Backslash is treated as whitespace so that continued blank lines
+are skipped. Doesn't move out of comments -- should be outside
+or at end of line."
+ (let ((arg (if backward
+ ;; If we're in a comment (including on the trailing
+ ;; newline), forward-comment doesn't move backwards out
+ ;; of it. Don't set the syntax table round this bit!
+ (let ((syntax (syntax-ppss)))
+ (if (nth 4 syntax)
+ (goto-char (nth 8 syntax)))
+ (- (point-max)))
+ (point-max))))
+ (with-syntax-table python-space-backslash-table
+ (forward-comment arg))))
+
+(defun python-backslash-continuation-line-p ()
+ "Non-nil if preceding line ends with backslash that is not in a comment."
+ (and (eq ?\\ (char-before (line-end-position 0)))
+ (not (syntax-ppss-context (syntax-ppss)))))
+
+(defun python-continuation-line-p ()
+ "Return non-nil if current line continues a previous one.
+The criteria are that the previous line ends in a backslash outside
+comments and strings, or that point is within brackets/parens."
+ (or (python-backslash-continuation-line-p)
+ (let ((depth (syntax-ppss-depth
+ (save-excursion ; syntax-ppss with arg changes point
+ (syntax-ppss (line-beginning-position))))))
+ (or (> depth 0)
+ (if (< depth 0) ; Unbalanced brackets -- act locally
+ (save-excursion
+ (condition-case ()
+ (progn (backward-up-list) t) ; actually within brackets
+ (error nil))))))))
+
+(defun python-comment-line-p ()
+ "Return non-nil iff current line has only a comment."
+ (save-excursion
+ (end-of-line)
+ (when (eq 'comment (syntax-ppss-context (syntax-ppss)))
+ (back-to-indentation)
+ (looking-at (rx (or (syntax comment-start) line-end))))))
+
+(defun python-blank-line-p ()
+ "Return non-nil iff current line is blank."
+ (save-excursion
+ (beginning-of-line)
+ (looking-at "\\s-*$")))
+
+(defun python-beginning-of-string ()
+ "Go to beginning of string around point.
+Do nothing if not in string."
+ (let ((state (syntax-ppss)))
+ (when (eq 'string (syntax-ppss-context state))
+ (goto-char (nth 8 state)))))
+
+(defun python-open-block-statement-p (&optional bos)
+ "Return non-nil if statement at point opens a block.
+BOS non-nil means point is known to be at beginning of statement."
+ (save-excursion
+ (unless bos (python-beginning-of-statement))
+ (looking-at (rx (and (or "if" "else" "elif" "while" "for" "def"
+ "class" "try" "except" "finally" "with")
+ symbol-end)))))
+
+(defun python-close-block-statement-p (&optional bos)
+ "Return non-nil if current line is a statement closing a block.
+BOS non-nil means point is at beginning of statement.
+The criteria are that the line isn't a comment or in string and
+ starts with keyword `raise', `break', `continue' or `pass'."
+ (save-excursion
+ (unless bos (python-beginning-of-statement))
+ (back-to-indentation)
+ (looking-at (rx (or "return" "raise" "break" "continue" "pass")
+ symbol-end))))
+
+(defun python-outdent-p ()
+ "Return non-nil if current line should outdent a level."
+ (save-excursion
+ (back-to-indentation)
+ (and (looking-at (rx (and (or "else" "finally" "except" "elif")
+ symbol-end)))
+ (not (python-in-string/comment))
+ ;; Ensure there's a previous statement and move to it.
+ (zerop (python-previous-statement))
+ (not (python-close-block-statement-p t))
+ ;; Fixme: check this
+ (not (python-open-block-statement-p)))))
+\f
+;;;; Indentation.
+
+(defcustom python-indent 4
+ "Number of columns for a unit of indentation in Python mode.
+See also `\\[python-guess-indent]'"
+ :group 'python
+ :type 'integer)
+(put 'python-indent 'safe-local-variable 'integerp)
+
+(defcustom python-guess-indent t
+ "Non-nil means Python mode guesses `python-indent' for the buffer."
+ :type 'boolean
+ :group 'python)
+
+(defcustom python-indent-string-contents t
+ "Non-nil means indent contents of multi-line strings together.
+This means indent them the same as the preceding non-blank line.
+Otherwise preserve their indentation.
+
+This only applies to `doc' strings, i.e. those that form statements;
+the indentation is preserved in others."
+ :type '(choice (const :tag "Align with preceding" t)
+ (const :tag "Preserve indentation" nil))
+ :group 'python)
+
+(defcustom python-honour-comment-indentation nil
+ "Non-nil means indent relative to preceding comment line.
+Only do this for comments where the leading comment character is
+followed by space. This doesn't apply to comment lines, which
+are always indented in lines with preceding comments."
+ :type 'boolean
+ :group 'python)
+
+(defcustom python-continuation-offset 4
+ "Number of columns of additional indentation for continuation lines.
+Continuation lines follow a backslash-terminated line starting a
+statement."
+ :group 'python
+ :type 'integer)
+
+(defun python-guess-indent ()
+ "Guess step for indentation of current buffer.
+Set `python-indent' locally to the value guessed."
+ (interactive)
+ (save-excursion
+ (save-restriction
+ (widen)
+ (goto-char (point-min))
+ (let (done indent)
+ (while (and (not done) (not (eobp)))
+ (when (and (re-search-forward (rx ?: (0+ space)
+ (or (syntax comment-start)
+ line-end))
+ nil 'move)
+ (python-open-block-statement-p))
+ (save-excursion
+ (python-beginning-of-statement)
+ (let ((initial (current-indentation)))
+ (if (zerop (python-next-statement))
+ (setq indent (- (current-indentation) initial)))
+ (if (and indent (>= indent 2) (<= indent 8)) ; sanity check
+ (setq done t))))))
+ (when done
+ (when (/= indent (default-value 'python-indent))
+ (set (make-local-variable 'python-indent) indent)
+ (unless (= tab-width python-indent)
+ (setq indent-tabs-mode nil)))
+ indent)))))
+
+;; Alist of possible indentations and start of statement they would
+;; close. Used in indentation cycling (below).
+(defvar python-indent-list nil
+ "Internal use.")
+;; Length of the above
+(defvar python-indent-list-length nil
+ "Internal use.")
+;; Current index into the alist.
+(defvar python-indent-index nil
+ "Internal use.")
+
+(defun python-calculate-indentation ()
+ "Calculate Python indentation for line at point."
+ (setq python-indent-list nil
+ python-indent-list-length 1)
+ (save-excursion
+ (beginning-of-line)
+ (let ((syntax (syntax-ppss))
+ start)
+ (cond
+ ((eq 'string (syntax-ppss-context syntax)) ; multi-line string
+ (if (not python-indent-string-contents)
+ (current-indentation)
+ ;; Only respect `python-indent-string-contents' in doc
+ ;; strings (defined as those which form statements).
+ (if (not (save-excursion
+ (python-beginning-of-statement)
+ (looking-at (rx (or (syntax string-delimiter)
+ (syntax string-quote))))))
+ (current-indentation)
+ ;; Find indentation of preceding non-blank line within string.
+ (setq start (nth 8 syntax))
+ (forward-line -1)
+ (while (and (< start (point)) (looking-at "\\s-*$"))
+ (forward-line -1))
+ (current-indentation))))
+ ((python-continuation-line-p) ; after backslash, or bracketed
+ (let ((point (point))
+ (open-start (cadr syntax))
+ (backslash (python-backslash-continuation-line-p))
+ (colon (eq ?: (char-before (1- (line-beginning-position))))))
+ (if open-start
+ ;; Inside bracketed expression.
+ (progn
+ (goto-char (1+ open-start))
+ ;; Look for first item in list (preceding point) and
+ ;; align with it, if found.
+ (if (with-syntax-table python-space-backslash-table
+ (let ((parse-sexp-ignore-comments t))
+ (condition-case ()
+ (progn (forward-sexp)
+ (backward-sexp)
+ (< (point) point))
+ (error nil))))
+ ;; Extra level if we're backslash-continued or
+ ;; following a key.
+ (if (or backslash colon)
+ (+ python-indent (current-column))
+ (current-column))
+ ;; Otherwise indent relative to statement start, one
+ ;; level per bracketing level.
+ (goto-char (1+ open-start))
+ (python-beginning-of-statement)
+ (+ (current-indentation) (* (car syntax) python-indent))))
+ ;; Otherwise backslash-continued.
+ (forward-line -1)
+ (if (python-continuation-line-p)
+ ;; We're past first continuation line. Align with
+ ;; previous line.
+ (current-indentation)
+ ;; First continuation line. Indent one step, with an
+ ;; extra one if statement opens a block.
+ (python-beginning-of-statement)
+ (+ (current-indentation) python-continuation-offset
+ (if (python-open-block-statement-p t)
+ python-indent
+ 0))))))
+ ((bobp) 0)
+ ;; Fixme: Like python-mode.el; not convinced by this.
+ ((looking-at (rx (0+ space) (syntax comment-start)
+ (not (any " \t\n")))) ; non-indentable comment
+ (current-indentation))
+ (t (if python-honour-comment-indentation
+ ;; Back over whitespace, newlines, non-indentable comments.
+ (catch 'done
+ (while t
+ (if (cond ((bobp))
+ ;; not at comment start
+ ((not (forward-comment -1))
+ (python-beginning-of-statement)
+ t)
+ ;; trailing comment
+ ((/= (current-column) (current-indentation))
+ (python-beginning-of-statement)
+ t)
+ ;; indentable comment like python-mode.el
+ ((and (looking-at (rx (syntax comment-start)
+ (or space line-end)))
+ (/= 0 (current-column)))))
+ (throw 'done t)))))
+ (python-indentation-levels)
+ ;; Prefer to indent comments with an immediately-following
+ ;; statement, e.g.
+ ;; ...
+ ;; # ...
+ ;; def ...
+ (when (and (> python-indent-list-length 1)
+ (python-comment-line-p))
+ (forward-line)
+ (unless (python-comment-line-p)
+ (let ((elt (assq (current-indentation) python-indent-list)))
+ (setq python-indent-list
+ (nconc (delete elt python-indent-list)
+ (list elt))))))
+ (caar (last python-indent-list)))))))
+
+;;;; Cycling through the possible indentations with successive TABs.
+
+;; These don't need to be buffer-local since they're only relevant
+;; during a cycle.
+
+(defun python-initial-text ()
+ "Text of line following indentation and ignoring any trailing comment."
+ (save-excursion
+ (buffer-substring (progn
+ (back-to-indentation)
+ (point))
+ (progn
+ (end-of-line)
+ (forward-comment -1)
+ (point)))))
+
+(defconst python-block-pairs
+ '(("else" "if" "elif" "while" "for" "try" "except")
+ ("elif" "if" "elif")
+ ("except" "try" "except")
+ ("finally" "try"))
+ "Alist of keyword matches.
+The car of an element is a keyword introducing a statement which
+can close a block opened by a keyword in the cdr.")
+
+(defun python-first-word ()
+ "Return first word (actually symbol) on the line."
+ (save-excursion
+ (back-to-indentation)
+ (current-word t)))
+
+(defun python-indentation-levels ()
+ "Return a list of possible indentations for this line.
+It is assumed not to be a continuation line or in a multi-line string.
+Includes the default indentation and those which would close all
+enclosing blocks. Elements of the list are actually pairs:
+\(INDENTATION . TEXT), where TEXT is the initial text of the
+corresponding block opening (or nil)."
+ (save-excursion
+ (let ((initial "")
+ levels indent)
+ ;; Only one possibility immediately following a block open
+ ;; statement, assuming it doesn't have a `suite' on the same line.
+ (cond
+ ((save-excursion (and (python-previous-statement)
+ (python-open-block-statement-p t)
+ (setq indent (current-indentation))
+ ;; Check we don't have something like:
+ ;; if ...: ...
+ (if (progn (python-end-of-statement)
+ (python-skip-comments/blanks t)
+ (eq ?: (char-before)))
+ (setq indent (+ python-indent indent)))))
+ (push (cons indent initial) levels))
+ ;; Only one possibility for comment line immediately following
+ ;; another.
+ ((save-excursion
+ (when (python-comment-line-p)
+ (forward-line -1)
+ (if (python-comment-line-p)
+ (push (cons (current-indentation) initial) levels)))))
+ ;; Fixme: Maybe have a case here which indents (only) first
+ ;; line after a lambda.
+ (t
+ (let ((start (car (assoc (python-first-word) python-block-pairs))))
+ (python-previous-statement)
+ ;; Is this a valid indentation for the line of interest?
+ (unless (or (if start ; potentially only outdentable
+ ;; Check for things like:
+ ;; if ...: ...
+ ;; else ...:
+ ;; where the second line need not be outdented.
+ (not (member (python-first-word)
+ (cdr (assoc start
+ python-block-pairs)))))
+ ;; Not sensible to indent to the same level as
+ ;; previous `return' &c.
+ (python-close-block-statement-p))
+ (push (cons (current-indentation) (python-initial-text))
+ levels))
+ (while (python-beginning-of-block)
+ (when (or (not start)
+ (member (python-first-word)
+ (cdr (assoc start python-block-pairs))))
+ (push (cons (current-indentation) (python-initial-text))
+ levels))))))
+ (prog1 (or levels (setq levels '((0 . ""))))
+ (setq python-indent-list levels
+ python-indent-list-length (length python-indent-list))))))
+
+;; This is basically what `python-indent-line' would be if we didn't
+;; do the cycling.
+(defun python-indent-line-1 (&optional leave)
+ "Subroutine of `python-indent-line'.
+Does non-repeated indentation. LEAVE non-nil means leave
+indentation if it is valid, i.e. one of the positions returned by
+`python-calculate-indentation'."
+ (let ((target (python-calculate-indentation))
+ (pos (- (point-max) (point))))
+ (if (or (= target (current-indentation))
+ ;; Maybe keep a valid indentation.
+ (and leave python-indent-list
+ (assq (current-indentation) python-indent-list)))
+ (if (< (current-column) (current-indentation))
+ (back-to-indentation))
+ (beginning-of-line)
+ (delete-horizontal-space)
+ (indent-to target)
+ (if (> (- (point-max) pos) (point))
+ (goto-char (- (point-max) pos))))))
+
+(defun python-indent-line ()
+ "Indent current line as Python code.
+When invoked via `indent-for-tab-command', cycle through possible
+indentations for current line. The cycle is broken by a command
+different from `indent-for-tab-command', i.e. successive TABs do
+the cycling."
+ (interactive)
+ (if (and (eq this-command 'indent-for-tab-command)
+ (eq last-command this-command))
+ (if (= 1 python-indent-list-length)
+ (message "Sole indentation")
+ (progn (setq python-indent-index
+ (% (1+ python-indent-index) python-indent-list-length))
+ (beginning-of-line)
+ (delete-horizontal-space)
+ (indent-to (car (nth python-indent-index python-indent-list)))
+ (if (python-block-end-p)
+ (let ((text (cdr (nth python-indent-index
+ python-indent-list))))
+ (if text
+ (message "Closes: %s" text))))))
+ (python-indent-line-1)
+ (setq python-indent-index (1- python-indent-list-length))))
+
+(defun python-indent-region (start end)
+ "`indent-region-function' for Python.
+Leaves validly-indented lines alone, i.e. doesn't indent to
+another valid position."
+ (save-excursion
+ (goto-char end)
+ (setq end (point-marker))
+ (goto-char start)
+ (or (bolp) (forward-line 1))
+ (while (< (point) end)
+ (or (and (bolp) (eolp))
+ (python-indent-line-1 t))
+ (forward-line 1))
+ (move-marker end nil)))
+
+(defun python-block-end-p ()
+ "Non-nil if this is a line in a statement closing a block,
+or a blank line indented to where it would close a block."
+ (and (not (python-comment-line-p))
+ (or (python-close-block-statement-p t)
+ (< (current-indentation)
+ (save-excursion
+ (python-previous-statement)
+ (current-indentation))))))
+\f
+;;;; Movement.
+
+;; Fixme: Define {for,back}ward-sexp-function? Maybe skip units like
+;; block, statement, depending on context.
+
+(defun python-beginning-of-defun ()
+ "`beginning-of-defun-function' for Python.
+Finds beginning of innermost nested class or method definition.
+Returns the name of the definition found at the end, or nil if
+reached start of buffer."
+ (let ((ci (current-indentation))
+ (def-re (rx line-start (0+ space) (or "def" "class") (1+ space)
+ (group (1+ (or word (syntax symbol))))))
+ found lep) ;; def-line
+ (if (python-comment-line-p)
+ (setq ci most-positive-fixnum))
+ (while (and (not (bobp)) (not found))
+ ;; Treat bol at beginning of function as outside function so
+ ;; that successive C-M-a makes progress backwards.
+ ;;(setq def-line (looking-at def-re))
+ (unless (bolp) (end-of-line))
+ (setq lep (line-end-position))
+ (if (and (re-search-backward def-re nil 'move)
+ ;; Must be less indented or matching top level, or
+ ;; equally indented if we started on a definition line.
+ (let ((in (current-indentation)))
+ (or (and (zerop ci) (zerop in))
+ (= lep (line-end-position)) ; on initial line
+ ;; Not sure why it was like this -- fails in case of
+ ;; last internal function followed by first
+ ;; non-def statement of the main body.
+ ;;(and def-line (= in ci))
+ (= in ci)
+ (< in ci)))
+ (not (python-in-string/comment)))
+ (setq found t)))))
+
+(defun python-end-of-defun ()
+ "`end-of-defun-function' for Python.
+Finds end of innermost nested class or method definition."
+ (let ((orig (point))
+ (pattern (rx line-start (0+ space) (or "def" "class") space)))
+ ;; Go to start of current block and check whether it's at top
+ ;; level. If it is, and not a block start, look forward for
+ ;; definition statement.
+ (when (python-comment-line-p)
+ (end-of-line)
+ (forward-comment most-positive-fixnum))
+ (if (not (python-open-block-statement-p))
+ (python-beginning-of-block))
+ (if (zerop (current-indentation))
+ (unless (python-open-block-statement-p)
+ (while (and (re-search-forward pattern nil 'move)
+ (python-in-string/comment))) ; just loop
+ (unless (eobp)
+ (beginning-of-line)))
+ ;; Don't move before top-level statement that would end defun.
+ (end-of-line)
+ (python-beginning-of-defun))
+ ;; If we got to the start of buffer, look forward for
+ ;; definition statement.
+ (if (and (bobp) (not (looking-at "def\\|class")))
+ (while (and (not (eobp))
+ (re-search-forward pattern nil 'move)
+ (python-in-string/comment)))) ; just loop
+ ;; We're at a definition statement (or end-of-buffer).
+ (unless (eobp)
+ (python-end-of-block)
+ ;; Count trailing space in defun (but not trailing comments).
+ (skip-syntax-forward " >")
+ (unless (eobp) ; e.g. missing final newline
+ (beginning-of-line)))
+ ;; Catch pathological cases like this, where the beginning-of-defun
+ ;; skips to a definition we're not in:
+ ;; if ...:
+ ;; ...
+ ;; else:
+ ;; ... # point here
+ ;; ...
+ ;; def ...
+ (if (< (point) orig)
+ (goto-char (point-max)))))
+
+(defun python-beginning-of-statement ()
+ "Go to start of current statement.
+Accounts for continuation lines, multi-line strings, and
+multi-line bracketed expressions."
+ (beginning-of-line)
+ (python-beginning-of-string)
+ (while (python-continuation-line-p)
+ (beginning-of-line)
+ (if (python-backslash-continuation-line-p)
+ (progn
+ (forward-line -1)
+ (while (python-backslash-continuation-line-p)
+ (forward-line -1)))
+ (python-beginning-of-string)
+ (python-skip-out)))
+ (back-to-indentation))
+
+(defun python-skip-out (&optional forward syntax)
+ "Skip out of any nested brackets.
+Skip forward if FORWARD is non-nil, else backward.
+If SYNTAX is non-nil it is the state returned by `syntax-ppss' at point.
+Return non-nil iff skipping was done."
+ (let ((depth (syntax-ppss-depth (or syntax (syntax-ppss))))
+ (forward (if forward -1 1)))
+ (unless (zerop depth)
+ (if (> depth 0)
+ ;; Skip forward out of nested brackets.
+ (condition-case () ; beware invalid syntax
+ (progn (backward-up-list (* forward depth)) t)
+ (error nil))
+ ;; Invalid syntax (too many closed brackets).
+ ;; Skip out of as many as possible.
+ (let (done)
+ (while (condition-case ()
+ (progn (backward-up-list forward)
+ (setq done t))
+ (error nil)))
+ done)))))
+
+(defun python-end-of-statement ()
+ "Go to the end of the current statement and return point.
+Usually this is the start of the next line, but if this is a
+multi-line statement we need to skip over the continuation lines.
+On a comment line, go to end of line."
+ (end-of-line)
+ (while (let (comment)
+ ;; Move past any enclosing strings and sexps, or stop if
+ ;; we're in a comment.
+ (while (let ((s (syntax-ppss)))
+ (cond ((eq 'comment (syntax-ppss-context s))
+ (setq comment t)
+ nil)
+ ((eq 'string (syntax-ppss-context s))
+ ;; Go to start of string and skip it.
+ (goto-char (nth 8 s))
+ (condition-case () ; beware invalid syntax
+ (progn (forward-sexp) t)
+ (error (end-of-line))))
+ ((python-skip-out t s))))
+ (end-of-line))
+ (unless comment
+ (eq ?\\ (char-before)))) ; Line continued?
+ (end-of-line 2)) ; Try next line.
+ (point))
+
+(defun python-previous-statement (&optional count)
+ "Go to start of previous statement.
+With argument COUNT, do it COUNT times. Stop at beginning of buffer.
+Return count of statements left to move."
+ (interactive "p")
+ (unless count (setq count 1))
+ (if (< count 0)
+ (python-next-statement (- count))
+ (python-beginning-of-statement)
+ (while (and (> count 0) (not (bobp)))
+ (python-skip-comments/blanks t)
+ (python-beginning-of-statement)
+ (unless (bobp) (setq count (1- count))))
+ count))
+
+(defun python-next-statement (&optional count)
+ "Go to start of next statement.
+With argument COUNT, do it COUNT times. Stop at end of buffer.
+Return count of statements left to move."
+ (interactive "p")
+ (unless count (setq count 1))
+ (if (< count 0)
+ (python-previous-statement (- count))
+ (beginning-of-line)
+ (while (and (> count 0) (not (eobp)))
+ (python-end-of-statement)
+ (python-skip-comments/blanks)
+ (unless (eobp)
+ (setq count (1- count))))
+ count))
+
+(defun python-beginning-of-block (&optional arg)
+ "Go to start of current block.
+With numeric arg, do it that many times. If ARG is negative, call
+`python-end-of-block' instead.
+If point is on the first line of a block, use its outer block.
+If current statement is in column zero, don't move and return nil.
+Otherwise return non-nil."
+ (interactive "p")
+ (unless arg (setq arg 1))
+ (cond
+ ((zerop arg))
+ ((< arg 0) (python-end-of-block (- arg)))
+ (t
+ (let ((point (point)))
+ (if (or (python-comment-line-p)
+ (python-blank-line-p))
+ (python-skip-comments/blanks t))
+ (python-beginning-of-statement)
+ (let ((ci (current-indentation)))
+ (if (zerop ci)
+ (not (goto-char point)) ; return nil
+ ;; Look upwards for less indented statement.
+ (if (catch 'done
+;;; This is slower than the below.
+;;; (while (zerop (python-previous-statement))
+;;; (when (and (< (current-indentation) ci)
+;;; (python-open-block-statement-p t))
+;;; (beginning-of-line)
+;;; (throw 'done t)))
+ (while (and (zerop (forward-line -1)))
+ (when (and (< (current-indentation) ci)
+ (not (python-comment-line-p))
+ ;; Move to beginning to save effort in case
+ ;; this is in string.
+ (progn (python-beginning-of-statement) t)
+ (python-open-block-statement-p t))
+ (beginning-of-line)
+ (throw 'done t)))
+ (not (goto-char point))) ; Failed -- return nil
+ (python-beginning-of-block (1- arg)))))))))
+
+(defun python-end-of-block (&optional arg)
+ "Go to end of current block.
+With numeric arg, do it that many times. If ARG is negative,
+call `python-beginning-of-block' instead.
+If current statement is in column zero and doesn't open a block,
+don't move and return nil. Otherwise return t."
+ (interactive "p")
+ (unless arg (setq arg 1))
+ (if (< arg 0)
+ (python-beginning-of-block (- arg))
+ (while (and (> arg 0)
+ (let* ((point (point))
+ (_ (if (python-comment-line-p)
+ (python-skip-comments/blanks t)))
+ (ci (current-indentation))
+ (open (python-open-block-statement-p))
+ opoint)
+ (if (and (zerop ci) (not open))
+ (not (goto-char point))
+ (catch 'done
+ (setq opoint (point))
+ (while (and (zerop (python-next-statement))
+ (not (= opoint (point))))
+ (setq opoint (point))
+ (when (or (and open (<= (current-indentation) ci))
+ (< (current-indentation) ci))
+ (python-skip-comments/blanks t)
+ (beginning-of-line 2)
+ (throw 'done t)))))))
+ (setq arg (1- arg)))
+ (zerop arg)))
+\f
+;;;; Imenu.
+
+(defvar python-recursing)
+(defun python-imenu-create-index ()
+ "`imenu-create-index-function' for Python.
+
+Makes nested Imenu menus from nested `class' and `def' statements.
+The nested menus are headed by an item referencing the outer
+definition; it has a space prepended to the name so that it sorts
+first with `imenu--sort-by-name' (though, unfortunately, sub-menus
+precede it)."
+ (unless (boundp 'python-recursing) ; dynamically bound below
+ ;; Normal call from Imenu.
+ (goto-char (point-min))
+ ;; Without this, we can get an infloop if the buffer isn't all
+ ;; fontified. I guess this is really a bug in syntax.el. OTOH,
+ ;; _with_ this, imenu doesn't immediately work; I can't figure out
+ ;; what's going on, but it must be something to do with timers in
+ ;; font-lock.
+ ;; This can't be right, especially not when jit-lock is not used. --Stef
+ ;; (unless (get-text-property (1- (point-max)) 'fontified)
+ ;; (font-lock-fontify-region (point-min) (point-max)))
+ )
+ (let (index-alist) ; accumulated value to return
+ (while (re-search-forward
+ (rx line-start (0+ space) ; leading space
+ (or (group "def") (group "class")) ; type
+ (1+ space) (group (1+ (or word ?_)))) ; name
+ nil t)
+ (unless (python-in-string/comment)
+ (let ((pos (match-beginning 0))
+ (name (match-string-no-properties 3)))
+ (if (match-beginning 2) ; def or class?
+ (setq name (concat "class " name)))
+ (save-restriction
+ (narrow-to-defun)
+ (let* ((python-recursing t)
+ (sublist (python-imenu-create-index)))
+ (if sublist
+ (progn (push (cons (concat " " name) pos) sublist)
+ (push (cons name sublist) index-alist))
+ (push (cons name pos) index-alist)))))))
+ (unless (boundp 'python-recursing)
+ ;; Look for module variables.
+ (let (vars)
+ (goto-char (point-min))
+ (while (re-search-forward
+ (rx line-start (group (1+ (or word ?_))) (0+ space) "=")
+ nil t)
+ (unless (python-in-string/comment)
+ (push (cons (match-string 1) (match-beginning 1))
+ vars)))
+ (setq index-alist (nreverse index-alist))
+ (if vars
+ (push (cons "Module variables"
+ (nreverse vars))
+ index-alist))))
+ index-alist))
+\f
+;;;; `Electric' commands.
+
+(defun python-electric-colon (arg)
+ "Insert a colon and maybe outdent the line if it is a statement like `else'.
+With numeric ARG, just insert that many colons. With \\[universal-argument],
+just insert a single colon."
+ (interactive "*P")
+ (self-insert-command (if (not (integerp arg)) 1 arg))
+ (and (not arg)
+ (eolp)
+ (python-outdent-p)
+ (not (python-in-string/comment))
+ (> (current-indentation) (python-calculate-indentation))
+ (python-indent-line))) ; OK, do it
+(put 'python-electric-colon 'delete-selection t)
+
+(defun python-backspace (arg)
+ "Maybe delete a level of indentation on the current line.
+Do so if point is at the end of the line's indentation.
+Otherwise just call `backward-delete-char-untabify'.
+Repeat ARG times."
+ (interactive "*p")
+ (if (or (/= (current-indentation) (current-column))
+ (bolp)
+ (python-continuation-line-p))
+ (backward-delete-char-untabify arg)
+ ;; Look for the largest valid indentation which is smaller than
+ ;; the current indentation.
+ (let ((indent 0)
+ (ci (current-indentation))
+ (indents (python-indentation-levels))
+ initial)
+ (dolist (x indents)
+ (if (< (car x) ci)
+ (setq indent (max indent (car x)))))
+ (setq initial (cdr (assq indent indents)))
+ (if (> (length initial) 0)
+ (message "Closes %s" initial))
+ (delete-horizontal-space)
+ (indent-to indent))))
+(put 'python-backspace 'delete-selection 'supersede)
+\f
+;;;; pychecker
+
+(defcustom python-check-command "pychecker --stdlib"
+ "Command used to check a Python file."
+ :type 'string
+ :group 'python)
+
+(defvar python-saved-check-command nil
+ "Internal use.")
+
+;; After `sgml-validate-command'.
+(defun python-check (command)
+ "Check a Python file (default current buffer's file).
+Runs COMMAND, a shell command, as if by `compile'.
+See `python-check-command' for the default."
+ (interactive
+ (list (read-string "Checker command: "
+ (or python-saved-check-command
+ (concat python-check-command " "
+ (let ((name (buffer-file-name)))
+ (if name
+ (file-name-nondirectory name))))))))
+ (setq python-saved-check-command command)
+ (require 'compile) ;To define compilation-* variables.
+ (save-some-buffers (not compilation-ask-about-save) nil)
+ (let ((compilation-error-regexp-alist
+ (cons '("(\\([^,]+\\), line \\([0-9]+\\))" 1 2)
+ compilation-error-regexp-alist)))
+ (compilation-start command)))
+\f
+;;;; Inferior mode stuff (following cmuscheme).
+
+;; Fixme: Make sure we can work with IPython.
+
+(defcustom python-python-command "python"
+ "Shell command to run Python interpreter.
+Any arguments can't contain whitespace.
+Note that IPython may not work properly; it must at least be used
+with the `-cl' flag, i.e. use `ipython -cl'."
+ :group 'python
+ :type 'string)
+
+(defcustom python-jython-command "jython"
+ "Shell command to run Jython interpreter.
+Any arguments can't contain whitespace."
+ :group 'python
+ :type 'string)
+
+(defvar python-command python-python-command
+ "Actual command used to run Python.
+May be `python-python-command' or `python-jython-command', possibly
+modified by the user. Additional arguments are added when the command
+is used by `run-python' et al.")
+
+(defvar python-buffer nil
+ "*The current Python process buffer.
+
+Commands that send text from source buffers to Python processes have
+to choose a process to send to. This is determined by buffer-local
+value of `python-buffer'. If its value in the current buffer,
+i.e. both any local value and the default one, is nil, `run-python'
+and commands that send to the Python process will start a new process.
+
+Whenever \\[run-python] starts a new process, it resets the default
+value of `python-buffer' to be the new process's buffer and sets the
+buffer-local value similarly if the current buffer is in Python mode
+or Inferior Python mode, so that source buffer stays associated with a
+specific sub-process.
+
+Use \\[python-set-proc] to set the default value from a buffer with a
+local value.")
+(make-variable-buffer-local 'python-buffer)
+
+(defconst python-compilation-regexp-alist
+ ;; FIXME: maybe these should move to compilation-error-regexp-alist-alist.
+ ;; The first already is (for CAML), but the second isn't. Anyhow,
+ ;; these are specific to the inferior buffer. -- fx
+ `((,(rx line-start (1+ (any " \t")) "File \""
+ (group (1+ (not (any "\"<")))) ; avoid `<stdin>' &c
+ "\", line " (group (1+ digit)))
+ 1 2)
+ (,(rx " in file " (group (1+ not-newline)) " on line "
+ (group (1+ digit)))
+ 1 2))
+ "`compilation-error-regexp-alist' for inferior Python.")
+
+(defvar inferior-python-mode-map
+ (let ((map (make-sparse-keymap)))
+ ;; This will inherit from comint-mode-map.
+ (define-key map "\C-c\C-l" 'python-load-file)
+ (define-key map "\C-c\C-v" 'python-check)
+ ;; Note that we _can_ still use these commands which send to the
+ ;; Python process even at the prompt iff we have a normal prompt,
+ ;; i.e. '>>> ' and not '... '. See the comment before
+ ;; python-send-region. Fixme: uncomment these if we address that.
+
+ ;; (define-key map [(meta ?\t)] 'python-complete-symbol)
+ ;; (define-key map "\C-c\C-f" 'python-describe-symbol)
+ map))
+
+(defvar inferior-python-mode-syntax-table
+ (let ((st (make-syntax-table python-mode-syntax-table)))
+ ;; Don't get confused by apostrophes in the process's output (e.g. if
+ ;; you execute "help(os)").
+ (modify-syntax-entry ?\' "." st)
+ ;; Maybe we should do the same for double quotes?
+ ;; (modify-syntax-entry ?\" "." st)
+ st))
+
+;; Fixme: This should inherit some stuff from `python-mode', but I'm
+;; not sure how much: at least some keybindings, like C-c C-f;
+;; syntax?; font-locking, e.g. for triple-quoted strings?
+(define-derived-mode inferior-python-mode comint-mode "Inferior Python"
+ "Major mode for interacting with an inferior Python process.
+A Python process can be started with \\[run-python].
+
+Hooks `comint-mode-hook' and `inferior-python-mode-hook' are run in
+that order.
+
+You can send text to the inferior Python process from other buffers
+containing Python source.
+ * \\[python-switch-to-python] switches the current buffer to the Python
+ process buffer.
+ * \\[python-send-region] sends the current region to the Python process.
+ * \\[python-send-region-and-go] switches to the Python process buffer
+ after sending the text.
+For running multiple processes in multiple buffers, see `run-python' and
+`python-buffer'.
+
+\\{inferior-python-mode-map}"
+ :group 'python
+ (setq mode-line-process '(":%s"))
+ (set (make-local-variable 'comint-input-filter) 'python-input-filter)
+ (add-hook 'comint-preoutput-filter-functions #'python-preoutput-filter
+ nil t)
+ ;; Still required by `comint-redirect-send-command', for instance
+ ;; (and we need to match things like `>>> ... >>> '):
+ (set (make-local-variable 'comint-prompt-regexp)
+ (rx line-start (1+ (and (repeat 3 (any ">.")) " "))))
+ (set (make-local-variable 'compilation-error-regexp-alist)
+ python-compilation-regexp-alist)
+ (compilation-shell-minor-mode 1))
+
+(defcustom inferior-python-filter-regexp "\\`\\s-*\\S-?\\S-?\\s-*\\'"
+ "Input matching this regexp is not saved on the history list.
+Default ignores all inputs of 0, 1, or 2 non-blank characters."
+ :type 'regexp
+ :group 'python)
+
+(defun python-input-filter (str)
+ "`comint-input-filter' function for inferior Python.
+Don't save anything for STR matching `inferior-python-filter-regexp'."
+ (not (string-match inferior-python-filter-regexp str)))
+
+;; Fixme: Loses with quoted whitespace.
+(defun python-args-to-list (string)
+ (let ((where (string-match "[ \t]" string)))
+ (cond ((null where) (list string))
+ ((not (= where 0))
+ (cons (substring string 0 where)
+ (python-args-to-list (substring string (+ 1 where)))))
+ (t (let ((pos (string-match "[^ \t]" string)))
+ (if pos (python-args-to-list (substring string pos))))))))
+
+(defvar python-preoutput-result nil
+ "Data from last `_emacs_out' line seen by the preoutput filter.")
+
+(defvar python-preoutput-leftover nil)
+(defvar python-preoutput-skip-next-prompt nil)
+
+;; Using this stops us getting lines in the buffer like
+;; >>> ... ... >>>
+(defun python-preoutput-filter (s)
+ "`comint-preoutput-filter-functions' function: ignore prompts not at bol."
+ (when python-preoutput-leftover
+ (setq s (concat python-preoutput-leftover s))
+ (setq python-preoutput-leftover nil))
+ (let ((start 0)
+ (res ""))
+ ;; First process whole lines.
+ (while (string-match "\n" s start)
+ (let ((line (substring s start (setq start (match-end 0)))))
+ ;; Skip prompt if needed.
+ (when (and python-preoutput-skip-next-prompt
+ (string-match comint-prompt-regexp line))
+ (setq python-preoutput-skip-next-prompt nil)
+ (setq line (substring line (match-end 0))))
+ ;; Recognize special _emacs_out lines.
+ (if (and (string-match "\\`_emacs_out \\(.*\\)\n\\'" line)
+ (local-variable-p 'python-preoutput-result))
+ (progn
+ (setq python-preoutput-result (match-string 1 line))
+ (set (make-local-variable 'python-preoutput-skip-next-prompt) t))
+ (setq res (concat res line)))))
+ ;; Then process the remaining partial line.
+ (unless (zerop start) (setq s (substring s start)))
+ (cond ((and (string-match comint-prompt-regexp s)
+ ;; Drop this prompt if it follows an _emacs_out...
+ (or python-preoutput-skip-next-prompt
+ ;; ... or if it's not gonna be inserted at BOL.
+ ;; Maybe we could be more selective here.
+ (if (zerop (length res))
+ (not (bolp))
+ (string-match ".\\'" res))))
+ ;; The need for this seems to be system-dependent:
+ ;; What is this all about, exactly? --Stef
+ ;; (if (and (eq ?. (aref s 0)))
+ ;; (accept-process-output (get-buffer-process (current-buffer)) 1))
+ (setq python-preoutput-skip-next-prompt nil)
+ res)
+ ((let ((end (min (length "_emacs_out ") (length s))))
+ (eq t (compare-strings s nil end "_emacs_out " nil end)))
+ ;; The leftover string is a prefix of _emacs_out so we don't know
+ ;; yet whether it's an _emacs_out or something else: wait until we
+ ;; get more output so we can resolve this ambiguity.
+ (set (make-local-variable 'python-preoutput-leftover) s)
+ res)
+ (t (concat res s)))))
+
+(autoload 'comint-check-proc "comint")
+
+;;;###autoload
+(defun run-python (&optional cmd noshow new)
+ "Run an inferior Python process, input and output via buffer *Python*.
+CMD is the Python command to run. NOSHOW non-nil means don't show the
+buffer automatically.
+
+Normally, if there is a process already running in `python-buffer',
+switch to that buffer. Interactively, a prefix arg allows you to edit
+the initial command line (default is `python-command'); `-i' etc. args
+will be added to this as appropriate. A new process is started if:
+one isn't running attached to `python-buffer', or interactively the
+default `python-command', or argument NEW is non-nil. See also the
+documentation for `python-buffer'.
+
+Runs the hook `inferior-python-mode-hook' \(after the
+`comint-mode-hook' is run). \(Type \\[describe-mode] in the process
+buffer for a list of commands.)"
+ (interactive (if current-prefix-arg
+ (list (read-string "Run Python: " python-command) nil t)
+ (list python-command)))
+ (unless cmd (setq cmd python-python-command))
+ (setq python-command cmd)
+ ;; Fixme: Consider making `python-buffer' buffer-local as a buffer
+ ;; (not a name) in Python buffers from which `run-python' &c is
+ ;; invoked. Would support multiple processes better.
+ (when (or new (not (comint-check-proc python-buffer)))
+ (with-current-buffer
+ (let* ((cmdlist (append (python-args-to-list cmd) '("-i")))
+ (path (getenv "PYTHONPATH"))
+ (process-environment ; to import emacs.py
+ (cons (concat "PYTHONPATH=" data-directory
+ (if path (concat ":" path)))
+ process-environment)))
+ (apply 'make-comint-in-buffer "Python"
+ (if new (generate-new-buffer "*Python*") "*Python*")
+ (car cmdlist) nil (cdr cmdlist)))
+ (setq-default python-buffer (current-buffer))
+ (setq python-buffer (current-buffer))
+ (accept-process-output (get-buffer-process python-buffer) 5)
+ (inferior-python-mode)
+ ;; Load function definitions we need.
+ ;; Before the preoutput function was used, this was done via -c in
+ ;; cmdlist, but that loses the banner and doesn't run the startup
+ ;; file. The code might be inline here, but there's enough that it
+ ;; seems worth putting in a separate file, and it's probably cleaner
+ ;; to put it in a module.
+ ;; Ensure we're at a prompt before doing anything else.
+ (python-send-receive "import emacs; print '_emacs_out ()'")))
+ (if (derived-mode-p 'python-mode)
+ (setq python-buffer (default-value 'python-buffer))) ; buffer-local
+ ;; Without this, help output goes into the inferior python buffer if
+ ;; the process isn't already running.
+ (sit-for 1 t) ;Should we use accept-process-output instead? --Stef
+ (unless noshow (pop-to-buffer python-buffer t)))
+
+;; Fixme: We typically lose if the inferior isn't in the normal REPL,
+;; e.g. prompt is `help> '. Probably raise an error if the form of
+;; the prompt is unexpected. Actually, it needs to be `>>> ', not
+;; `... ', i.e. we're not inputting a block &c. However, this may not
+;; be the place to check it, e.g. we might actually want to send
+;; commands having set up such a state.
+
+(defun python-send-command (command)
+ "Like `python-send-string' but resets `compilation-shell-minor-mode'.
+COMMAND should be a single statement."
+ ;; (assert (not (string-match "\n" command)))
+ ;; (let ((end (marker-position (process-mark (python-proc)))))
+ (with-current-buffer (process-buffer (python-proc))
+ (goto-char (point-max))
+ (compilation-forget-errors)
+ (python-send-string command)
+ (setq compilation-last-buffer (current-buffer)))
+ ;; No idea what this is for but it breaks the call to
+ ;; compilation-fake-loc in python-send-region. -- Stef
+ ;; Must wait until this has completed before re-setting variables below.
+ ;; (python-send-receive "print '_emacs_out ()'")
+ ;; (with-current-buffer python-buffer
+ ;; (set-marker compilation-parsing-end end))
+ ) ;;)
+
+(defun python-send-region (start end)
+ "Send the region to the inferior Python process."
+ ;; The region is evaluated from a temporary file. This avoids
+ ;; problems with blank lines, which have different semantics
+ ;; interactively and in files. It also saves the inferior process
+ ;; buffer filling up with interpreter prompts. We need a Python
+ ;; function to remove the temporary file when it has been evaluated
+ ;; (though we could probably do it in Lisp with a Comint output
+ ;; filter). This function also catches exceptions and truncates
+ ;; tracebacks not to mention the frame of the function itself.
+ ;;
+ ;; The `compilation-shell-minor-mode' parsing takes care of relating
+ ;; the reference to the temporary file to the source.
+ ;;
+ ;; Fixme: Write a `coding' header to the temp file if the region is
+ ;; non-ASCII.
+ (interactive "r")
+ (let* ((f (make-temp-file "py"))
+ (command (format "emacs.eexecfile(%S)" f))
+ (orig-start (copy-marker start)))
+ (when (save-excursion
+ (goto-char start)
+ (/= 0 (current-indentation))) ; need dummy block
+ (save-excursion
+ (goto-char orig-start)
+ ;; Wrong if we had indented code at buffer start.
+ (set-marker orig-start (line-beginning-position 0)))
+ (write-region "if True:\n" nil f nil 'nomsg))
+ (write-region start end f t 'nomsg)
+ (python-send-command command)
+ (with-current-buffer (process-buffer (python-proc))
+ ;; Tell compile.el to redirect error locations in file `f' to
+ ;; positions past marker `orig-start'. It has to be done *after*
+ ;; `python-send-command''s call to `compilation-forget-errors'.
+ (compilation-fake-loc orig-start f))))
+
+(defun python-send-string (string)
+ "Evaluate STRING in inferior Python process."
+ (interactive "sPython command: ")
+ (comint-send-string (python-proc) string)
+ (unless (string-match "\n\\'" string)
+ ;; Make sure the text is properly LF-terminated.
+ (comint-send-string (python-proc) "\n"))
+ (when (string-match "\n[ \t].*\n?\\'" string)
+ ;; If the string contains a final indented line, add a second newline so
+ ;; as to make sure we terminate the multiline instruction.
+ (comint-send-string (python-proc) "\n")))
+
+(defun python-send-buffer ()
+ "Send the current buffer to the inferior Python process."
+ (interactive)
+ (python-send-region (point-min) (point-max)))
+
+;; Fixme: Try to define the function or class within the relevant
+;; module, not just at top level.
+(defun python-send-defun ()
+ "Send the current defun (class or method) to the inferior Python process."
+ (interactive)
+ (save-excursion (python-send-region (progn (beginning-of-defun) (point))
+ (progn (end-of-defun) (point)))))
+
+(defun python-switch-to-python (eob-p)
+ "Switch to the Python process buffer, maybe starting new process.
+With prefix arg, position cursor at end of buffer."
+ (interactive "P")
+ (pop-to-buffer (process-buffer (python-proc)) t) ;Runs python if needed.
+ (when eob-p
+ (push-mark)
+ (goto-char (point-max))))
+
+(defun python-send-region-and-go (start end)
+ "Send the region to the inferior Python process.
+Then switch to the process buffer."
+ (interactive "r")
+ (python-send-region start end)
+ (python-switch-to-python t))
+
+(defcustom python-source-modes '(python-mode jython-mode)
+ "Used to determine if a buffer contains Python source code.
+If a file is loaded into a buffer that is in one of these major modes,
+it is considered Python source by `python-load-file', which uses the
+value to determine defaults."
+ :type '(repeat function)
+ :group 'python)
+
+(defvar python-prev-dir/file nil
+ "Caches (directory . file) pair used in the last `python-load-file' command.
+Used for determining the default in the next one.")
+
+(autoload 'comint-get-source "comint")
+
+(defun python-load-file (file-name)
+ "Load a Python file FILE-NAME into the inferior Python process.
+If the file has extension `.py' import or reload it as a module.
+Treating it as a module keeps the global namespace clean, provides
+function location information for debugging, and supports users of
+module-qualified names."
+ (interactive (comint-get-source "Load Python file: " python-prev-dir/file
+ python-source-modes
+ t)) ; because execfile needs exact name
+ (comint-check-source file-name) ; Check to see if buffer needs saving.
+ (setq python-prev-dir/file (cons (file-name-directory file-name)
+ (file-name-nondirectory file-name)))
+ (with-current-buffer (process-buffer (python-proc)) ;Runs python if needed.
+ ;; Fixme: I'm not convinced by this logic from python-mode.el.
+ (python-send-command
+ (if (string-match "\\.py\\'" file-name)
+ (let ((module (file-name-sans-extension
+ (file-name-nondirectory file-name))))
+ (format "emacs.eimport(%S,%S)"
+ module (file-name-directory file-name)))
+ (format "execfile(%S)" file-name)))
+ (message "%s loaded" file-name)))
+
+(defun python-proc ()
+ "Return the current Python process.
+See variable `python-buffer'. Starts a new process if necessary."
+ ;; Fixme: Maybe should look for another active process if there
+ ;; isn't one for `python-buffer'.
+ (unless (comint-check-proc python-buffer)
+ (run-python nil t))
+ (get-buffer-process (if (derived-mode-p 'inferior-python-mode)
+ (current-buffer)
+ python-buffer)))
+
+(defun python-set-proc ()
+ "Set the default value of `python-buffer' to correspond to this buffer.
+If the current buffer has a local value of `python-buffer', set the
+default (global) value to that. The associated Python process is
+the one that gets input from \\[python-send-region] et al when used
+in a buffer that doesn't have a local value of `python-buffer'."
+ (interactive)
+ (if (local-variable-p 'python-buffer)
+ (setq-default python-buffer python-buffer)
+ (error "No local value of `python-buffer'")))
+\f
+;;;; Context-sensitive help.
+
+(defconst python-dotty-syntax-table
+ (let ((table (make-syntax-table)))
+ (set-char-table-parent table python-mode-syntax-table)
+ (modify-syntax-entry ?. "_" table)
+ table)
+ "Syntax table giving `.' symbol syntax.
+Otherwise inherits from `python-mode-syntax-table'.")
+
+(defvar view-return-to-alist)
+(eval-when-compile (autoload 'help-buffer "help-fns"))
+
+(defvar python-imports) ; forward declaration
+
+;; Fixme: Should this actually be used instead of info-look, i.e. be
+;; bound to C-h S? [Probably not, since info-look may work in cases
+;; where this doesn't.]
+(defun python-describe-symbol (symbol)
+ "Get help on SYMBOL using `help'.
+Interactively, prompt for symbol.
+
+Symbol may be anything recognized by the interpreter's `help'
+command -- e.g. `CALLS' -- not just variables in scope in the
+interpreter. This only works for Python version 2.2 or newer
+since earlier interpreters don't support `help'.
+
+In some cases where this doesn't find documentation, \\[info-lookup-symbol]
+will."
+ ;; Note that we do this in the inferior process, not a separate one, to
+ ;; ensure the environment is appropriate.
+ (interactive
+ (let ((symbol (with-syntax-table python-dotty-syntax-table
+ (current-word)))
+ (enable-recursive-minibuffers t))
+ (list (read-string (if symbol
+ (format "Describe symbol (default %s): " symbol)
+ "Describe symbol: ")
+ nil nil symbol))))
+ (if (equal symbol "") (error "No symbol"))
+ ;; Ensure we have a suitable help buffer.
+ ;; Fixme: Maybe process `Related help topics' a la help xrefs and
+ ;; allow C-c C-f in help buffer.
+ (let ((temp-buffer-show-hook ; avoid xref stuff
+ (lambda ()
+ (toggle-read-only 1)
+ (setq view-return-to-alist
+ (list (cons (selected-window) help-return-method))))))
+ (with-output-to-temp-buffer (help-buffer)
+ (with-current-buffer standard-output
+ ;; Fixme: Is this actually useful?
+ (help-setup-xref (list 'python-describe-symbol symbol) (interactive-p))
+ (set (make-local-variable 'comint-redirect-subvert-readonly) t)
+ (print-help-return-message))))
+ (comint-redirect-send-command-to-process (format "emacs.ehelp(%S, %s)"
+ symbol python-imports)
+ "*Help*" (python-proc) nil nil))
+
+(add-to-list 'debug-ignored-errors "^No symbol")
+
+(defun python-send-receive (string)
+ "Send STRING to inferior Python (if any) and return result.
+The result is what follows `_emacs_out' in the output."
+ (python-send-string string)
+ (let ((proc (python-proc)))
+ (with-current-buffer (process-buffer proc)
+ (set (make-local-variable 'python-preoutput-result) nil)
+ (while (progn
+ (accept-process-output proc 5)
+ (null python-preoutput-result)))
+ (prog1 python-preoutput-result
+ (kill-local-variable 'python-preoutput-result)))))
+
+;; Fixme: Is there anything reasonable we can do with random methods?
+;; (Currently only works with functions.)
+(defun python-eldoc-function ()
+ "`eldoc-print-current-symbol-info' for Python.
+Only works when point is in a function name, not its arg list, for
+instance. Assumes an inferior Python is running."
+ (let ((symbol (with-syntax-table python-dotty-syntax-table
+ (current-word))))
+ ;; This is run from timers, so inhibit-quit tends to be set.
+ (with-local-quit
+ ;; First try the symbol we're on.
+ (or (and symbol
+ (python-send-receive (format "emacs.eargs(%S, %s)"
+ symbol python-imports)))
+ ;; Try moving to symbol before enclosing parens.
+ (let ((s (syntax-ppss)))
+ (unless (zerop (car s))
+ (when (eq ?\( (char-after (nth 1 s)))
+ (save-excursion
+ (goto-char (nth 1 s))
+ (skip-syntax-backward "-")
+ (let ((point (point)))
+ (skip-chars-backward "a-zA-Z._")
+ (if (< (point) point)
+ (python-send-receive
+ (format "emacs.eargs(%S, %s)"
+ (buffer-substring-no-properties (point) point)
+ python-imports))))))))))))
+\f
+;;;; Info-look functionality.
+
+(defun python-after-info-look ()
+ "Set up info-look for Python.
+Used with `eval-after-load'."
+ (let* ((version (let ((s (shell-command-to-string (concat python-command
+ " -V"))))
+ (string-match "^Python \\([0-9]+\\.[0-9]+\\>\\)" s)
+ (match-string 1 s)))
+ ;; Whether info files have a Python version suffix, e.g. in Debian.
+ (versioned
+ (with-temp-buffer
+ (with-no-warnings (Info-mode))
+ (condition-case ()
+ ;; Don't use `info' because it would pop-up a *info* buffer.
+ (with-no-warnings
+ (Info-goto-node (format "(python%s-lib)Miscellaneous Index"
+ version))
+ t)
+ (error nil)))))
+ (info-lookup-maybe-add-help
+ :mode 'python-mode
+ :regexp "[[:alnum:]_]+"
+ :doc-spec
+ ;; Fixme: Can this reasonably be made specific to indices with
+ ;; different rules? Is the order of indices optimal?
+ ;; (Miscellaneous in -ref first prefers lookup of keywords, for
+ ;; instance.)
+ (if versioned
+ ;; The empty prefix just gets us highlighted terms.
+ `((,(concat "(python" version "-ref)Miscellaneous Index") nil "")
+ (,(concat "(python" version "-ref)Module Index" nil ""))
+ (,(concat "(python" version "-ref)Function-Method-Variable Index"
+ nil ""))
+ (,(concat "(python" version "-ref)Class-Exception-Object Index"
+ nil ""))
+ (,(concat "(python" version "-lib)Module Index" nil ""))
+ (,(concat "(python" version "-lib)Class-Exception-Object Index"
+ nil ""))
+ (,(concat "(python" version "-lib)Function-Method-Variable Index"
+ nil ""))
+ (,(concat "(python" version "-lib)Miscellaneous Index" nil "")))
+ '(("(python-ref)Miscellaneous Index" nil "")
+ ("(python-ref)Module Index" nil "")
+ ("(python-ref)Function-Method-Variable Index" nil "")
+ ("(python-ref)Class-Exception-Object Index" nil "")
+ ("(python-lib)Module Index" nil "")
+ ("(python-lib)Class-Exception-Object Index" nil "")
+ ("(python-lib)Function-Method-Variable Index" nil "")
+ ("(python-lib)Miscellaneous Index" nil ""))))))
+(eval-after-load "info-look" '(python-after-info-look))
+\f
+;;;; Miscellany.
+
+(defcustom python-jython-packages '("java" "javax" "org" "com")
+ "Packages implying `jython-mode'.
+If these are imported near the beginning of the buffer, `python-mode'
+actually punts to `jython-mode'."
+ :type '(repeat string)
+ :group 'python)
+
+;; Called from `python-mode', this causes a recursive call of the
+;; mode. See logic there to break out of the recursion.
+(defun python-maybe-jython ()
+ "Invoke `jython-mode' if the buffer appears to contain Jython code.
+The criterion is either a match for `jython-mode' via
+`interpreter-mode-alist' or an import of a module from the list
+`python-jython-packages'."
+ ;; The logic is taken from python-mode.el.
+ (save-excursion
+ (save-restriction
+ (widen)
+ (goto-char (point-min))
+ (let ((interpreter (if (looking-at auto-mode-interpreter-regexp)
+ (match-string 2))))
+ (if (and interpreter (eq 'jython-mode
+ (cdr (assoc (file-name-nondirectory
+ interpreter)
+ interpreter-mode-alist))))
+ (jython-mode)
+ (if (catch 'done
+ (while (re-search-forward
+ (rx line-start (or "import" "from") (1+ space)
+ (group (1+ (not (any " \t\n.")))))
+ (+ (point-min) 10000) ; Probably not worth customizing.
+ t)
+ (if (member (match-string 1) python-jython-packages)
+ (throw 'done t))))
+ (jython-mode)))))))
+
+(defun python-fill-paragraph (&optional justify)
+ "`fill-paragraph-function' handling comments and multi-line strings.
+If any of the current line is a comment, fill the comment or the
+paragraph of it that point is in, preserving the comment's
+indentation and initial comment characters. Similarly if the end
+of the current line is in or at the end of a multi-line string.
+Otherwise, do nothing."
+ (interactive "P")
+ (or (fill-comment-paragraph justify)
+ ;; The `paragraph-start' and `paragraph-separate' variables
+ ;; don't allow us to delimit the last paragraph in a multi-line
+ ;; string properly, so narrow to the string and then fill around
+ ;; (the end of) the current line.
+ (save-excursion
+ (end-of-line)
+ (let* ((syntax (syntax-ppss))
+ (orig (point))
+ (start (nth 8 syntax))
+ end)
+ (cond ((eq t (nth 3 syntax)) ; in fenced string
+ (goto-char (nth 8 syntax)) ; string start
+ (setq end (condition-case () ; for unbalanced quotes
+ (progn (forward-sexp) (point))
+ (error (point-max)))))
+ ((re-search-backward "\\s|\\s-*\\=" nil t) ; end of fenced
+ ; string
+ (forward-char)
+ (setq end (point))
+ (condition-case ()
+ (progn (backward-sexp)
+ (setq start (point)))
+ (error (setq end nil)))))
+ (when end
+ (save-restriction
+ (narrow-to-region start end)
+ (goto-char orig)
+ (let ((paragraph-separate
+ ;; Make sure that fenced-string delimiters that stand
+ ;; on their own line stay there.
+ (concat "[ \t]*['\"]+[ \t]*$\\|" paragraph-separate)))
+ (fill-paragraph justify))))))
+ t))
+
+(defun python-shift-left (start end &optional count)
+ "Shift lines in region COUNT (the prefix arg) columns to the left.
+COUNT defaults to `python-indent'. If region isn't active, just shift
+current line. The region shifted includes the lines in which START and
+END lie. It is an error if any lines in the region are indented less than
+COUNT columns."
+ (interactive (if mark-active
+ (list (region-beginning) (region-end) current-prefix-arg)
+ (list (point) (point) current-prefix-arg)))
+ (if count
+ (setq count (prefix-numeric-value count))
+ (setq count python-indent))
+ (when (> count 0)
+ (save-excursion
+ (goto-char start)
+ (while (< (point) end)
+ (if (and (< (current-indentation) count)
+ (not (looking-at "[ \t]*$")))
+ (error "Can't shift all lines enough"))
+ (forward-line))
+ (indent-rigidly start end (- count)))))
+
+(add-to-list 'debug-ignored-errors "^Can't shift all lines enough")
+
+(defun python-shift-right (start end &optional count)
+ "Shift lines in region COUNT (the prefix arg) columns to the right.
+COUNT defaults to `python-indent'. If region isn't active, just shift
+current line. The region shifted includes the lines in which START and
+END lie."
+ (interactive (if mark-active
+ (list (region-beginning) (region-end) current-prefix-arg)
+ (list (point) (point) current-prefix-arg)))
+ (if count
+ (setq count (prefix-numeric-value count))
+ (setq count python-indent))
+ (indent-rigidly start end count))
+
+(defun python-outline-level ()
+ "`outline-level' function for Python mode.
+The level is the number of `python-indent' steps of indentation
+of current line."
+ (1+ (/ (current-indentation) python-indent)))
+
+;; Fixme: Consider top-level assignments, imports, &c.
+(defun python-current-defun ()
+ "`add-log-current-defun-function' for Python."
+ (save-excursion
+ ;; Move up the tree of nested `class' and `def' blocks until we
+ ;; get to zero indentation, accumulating the defined names.
+ (let ((start t)
+ accum)
+ (while (or start (> (current-indentation) 0))
+ (setq start nil)
+ (python-beginning-of-block)
+ (end-of-line)
+ (beginning-of-defun)
+ (if (looking-at (rx (0+ space) (or "def" "class") (1+ space)
+ (group (1+ (or word (syntax symbol))))))
+ (push (match-string 1) accum)))
+ (if accum (mapconcat 'identity accum ".")))))
+
+(defun python-mark-block ()
+ "Mark the block around point.
+Uses `python-beginning-of-block', `python-end-of-block'."
+ (interactive)
+ (push-mark)
+ (python-beginning-of-block)
+ (push-mark (point) nil t)
+ (python-end-of-block)
+ (exchange-point-and-mark))
+
+;; Fixme: Provide a find-function-like command to find source of a
+;; definition (separate from BicycleRepairMan). Complicated by
+;; finding the right qualified name.
+\f
+;;;; Completion.
+
+(defvar python-imports nil
+ "String of top-level import statements updated by `python-find-imports'.")
+(make-variable-buffer-local 'python-imports)
+
+;; Fixme: Should font-lock try to run this when it deals with an import?
+;; Maybe not a good idea if it gets run multiple times when the
+;; statement is being edited, and is more likely to end up with
+;; something syntactically incorrect.
+;; However, what we should do is to trundle up the block tree from point
+;; to extract imports that appear to be in scope, and add those.
+(defun python-find-imports ()
+ "Find top-level imports, updating `python-imports'."
+ (interactive)
+ (save-excursion
+ (let (lines)
+ (goto-char (point-min))
+ (while (re-search-forward "^import\\>\\|^from\\>" nil t)
+ (unless (syntax-ppss-context (syntax-ppss))
+ (push (buffer-substring (line-beginning-position)
+ (line-beginning-position 2))
+ lines)))
+ (setq python-imports
+ (if lines
+ (apply #'concat
+;; This is probably best left out since you're unlikely to need the
+;; doc for a function in the buffer and the import will lose if the
+;; Python sub-process' working directory isn't the same as the
+;; buffer's.
+;; (if buffer-file-name
+;; (concat
+;; "import "
+;; (file-name-sans-extension
+;; (file-name-nondirectory buffer-file-name))))
+ (nreverse lines))
+ "None"))
+ (when lines
+ (set-text-properties 0 (length python-imports) nil python-imports)
+ ;; The output ends up in the wrong place if the string we
+ ;; send contains newlines (from the imports).
+ (setq python-imports
+ (replace-regexp-in-string "\n" "\\n"
+ (format "%S" python-imports) t t))))))
+
+;; Fixme: This fails the first time if the sub-process isn't already
+;; running. Presumably a timing issue with i/o to the process.
+(defun python-symbol-completions (symbol)
+ "Return a list of completions of the string SYMBOL from Python process.
+The list is sorted.
+Uses `python-imports' to load modules against which to complete."
+ (when symbol
+ (let ((completions
+ (condition-case ()
+ (car (read-from-string
+ (python-send-receive
+ (format "emacs.complete(%S,%s)" symbol python-imports))))
+ (error nil))))
+ (sort
+ ;; We can get duplicates from the above -- don't know why.
+ (delete-dups completions)
+ #'string<))))
+
+(defun python-partial-symbol ()
+ "Return the partial symbol before point (for completion)."
+ (let ((end (point))
+ (start (save-excursion
+ (and (re-search-backward
+ (rx (or buffer-start (regexp "[^[:alnum:]._]"))
+ (group (1+ (regexp "[[:alnum:]._]"))) point)
+ nil t)
+ (match-beginning 1)))))
+ (if start (buffer-substring-no-properties start end))))
+
+(defun python-complete-symbol ()
+ "Perform completion on the Python symbol preceding point.
+Repeating the command scrolls the completion window."
+ (interactive)
+ (let ((window (get-buffer-window "*Completions*")))
+ (if (and (eq last-command this-command)
+ window (window-live-p window) (window-buffer window)
+ (buffer-name (window-buffer window)))
+ (with-current-buffer (window-buffer window)
+ (if (pos-visible-in-window-p (point-max) window)
+ (set-window-start window (point-min))
+ (save-selected-window
+ (select-window window)
+ (scroll-up))))
+ ;; Do completion.
+ (let* ((end (point))
+ (symbol (python-partial-symbol))
+ (completions (python-symbol-completions symbol))
+ (completion (if completions
+ (try-completion symbol completions))))
+ (when symbol
+ (cond ((eq completion t))
+ ((null completion)
+ (message "Can't find completion for \"%s\"" symbol)
+ (ding))
+ ((not (string= symbol completion))
+ (delete-region (- end (length symbol)) end)
+ (insert completion))
+ (t
+ (message "Making completion list...")
+ (with-output-to-temp-buffer "*Completions*"
+ (display-completion-list completions symbol))
+ (message "Making completion list...%s" "done"))))))))
+
+(defun python-try-complete (old)
+ "Completion function for Python for use with `hippie-expand'."
+ (when (derived-mode-p 'python-mode) ; though we only add it locally
+ (unless old
+ (let ((symbol (python-partial-symbol)))
+ (he-init-string (- (point) (length symbol)) (point))
+ (if (not (he-string-member he-search-string he-tried-table))
+ (push he-search-string he-tried-table))
+ (setq he-expand-list
+ (and symbol (python-symbol-completions symbol)))))
+ (while (and he-expand-list
+ (he-string-member (car he-expand-list) he-tried-table))
+ (pop he-expand-list))
+ (if he-expand-list
+ (progn
+ (he-substitute-string (pop he-expand-list))
+ t)
+ (if old (he-reset-string))
+ nil)))
+\f
+;;;; FFAP support
+
+(defun python-module-path (module)
+ "Function for `ffap-alist' to return path to MODULE."
+ (python-send-receive (format "emacs.modpath (%S)" module)))
+
+(eval-after-load "ffap"
+ '(push '(python-mode . python-module-path) ffap-alist))
+\f
+;;;; Skeletons
+
+(defcustom python-use-skeletons nil
+ "Non-nil means template skeletons will be automagically inserted.
+This happens when pressing \"if<SPACE>\", for example, to prompt for
+the if condition."
+ :type 'boolean
+ :group 'python)
+
+(defvar python-skeletons nil
+ "Alist of named skeletons for Python mode.
+Elements are of the form (NAME . EXPANDER-FUNCTION).")
+
+(defvar python-mode-abbrev-table nil
+ "Abbrev table for Python mode.
+The default contents correspond to the elements of `python-skeletons'.")
+(define-abbrev-table 'python-mode-abbrev-table ())
+
+(eval-when-compile
+ ;; Define a user-level skeleton and add it to `python-skeletons' and
+ ;; the abbrev table.
+(defmacro def-python-skeleton (name &rest elements)
+ (let* ((name (symbol-name name))
+ (function (intern (concat "python-insert-" name))))
+ `(progn
+ (add-to-list 'python-skeletons ',(cons name function))
+ (if python-use-skeletons
+ (define-abbrev python-mode-abbrev-table ,name "" ',function nil t))
+ (define-skeleton ,function
+ ,(format "Insert Python \"%s\" template." name)
+ ,@elements)))))
+(put 'def-python-skeleton 'lisp-indent-function 2)
+
+;; From `skeleton-further-elements':
+;; `<': outdent a level;
+;; `^': delete indentation on current line and also previous newline.
+;; Not quote like `delete-indentation'. Assumes point is at
+;; beginning of indentation.
+
+(def-python-skeleton if
+ "Condition: "
+ "if " str ":" \n
+ > _ \n
+ ("other condition, %s: "
+ < ; Avoid wrong indentation after block opening.
+ "elif " str ":" \n
+ > _ \n nil)
+ (python-else) | ^)
+
+(define-skeleton python-else
+ "Auxiliary skeleton."
+ nil
+ (unless (eq ?y (read-char "Add `else' clause? (y for yes or RET for no) "))
+ (signal 'quit t))
+ < "else:" \n
+ > _ \n)
+
+(def-python-skeleton while
+ "Condition: "
+ "while " str ":" \n
+ > _ \n
+ (python-else) | ^)
+
+(def-python-skeleton for
+ "Target, %s: "
+ "for " str " in " (skeleton-read "Expression, %s: ") ":" \n
+ > _ \n
+ (python-else) | ^)
+
+(def-python-skeleton try/except
+ nil
+ "try:" \n
+ > _ \n
+ ("Exception, %s: "
+ < "except " str (python-target) ":" \n
+ > _ \n nil)
+ < "except:" \n
+ > _ \n
+ (python-else) | ^)
+
+(define-skeleton python-target
+ "Auxiliary skeleton."
+ "Target, %s: " ", " str | -2)
+
+(def-python-skeleton try/finally
+ nil
+ "try:" \n
+ > _ \n
+ < "finally:" \n
+ > _ \n)
+
+(def-python-skeleton def
+ "Name: "
+ "def " str " (" ("Parameter, %s: " (unless (equal ?\( (char-before)) ", ")
+ str) "):" \n
+ "\"\"\"" @ " \"\"\"" \n ; Fixme: syntaxification wrong for """"""
+ > _ \n)
+
+(def-python-skeleton class
+ "Name: "
+ "class " str " (" ("Inheritance, %s: "
+ (unless (equal ?\( (char-before)) ", ")
+ str)
+ & ")" | -2 ; close list or remove opening
+ ":" \n
+ "\"\"\"" @ " \"\"\"" \n
+ > _ \n)
+
+(defvar python-default-template "if"
+ "Default template to expand by `python-expand-template'.
+Updated on each expansion.")
+
+(defun python-expand-template (name)
+ "Expand template named NAME.
+Interactively, prompt for the name with completion."
+ (interactive
+ (list (completing-read (format "Template to expand (default %s): "
+ python-default-template)
+ python-skeletons nil t)))
+ (if (equal "" name)
+ (setq name python-default-template)
+ (setq python-default-template name))
+ (let ((func (cdr (assoc name python-skeletons))))
+ (if func
+ (funcall func)
+ (error "Undefined template: %s" name))))
+\f
+;;;; Bicycle Repair Man support
+
+(autoload 'pymacs-load "pymacs" nil t)
+(autoload 'brm-init "bikemacs")
+
+;; I'm not sure how useful BRM really is, and it's certainly dangerous
+;; the way it modifies files outside Emacs... Also note that the
+;; current BRM loses with tabs used for indentation -- I submitted a
+;; fix <URL:http://www.loveshack.ukfsn.org/emacs/bikeemacs.py.diff>.
+(defun python-setup-brm ()
+ "Set up Bicycle Repair Man refactoring tool (if available).
+
+Note that the `refactoring' features change files independently of
+Emacs and may modify and save the contents of the current buffer
+without confirmation."
+ (interactive)
+ (condition-case data
+ (unless (fboundp 'brm-rename)
+ (pymacs-load "bikeemacs" "brm-") ; first line of normal recipe
+ (let ((py-mode-map (make-sparse-keymap)) ; it assumes this
+ (features (cons 'python-mode features))) ; and requires this
+ (brm-init)) ; second line of normal recipe
+ (remove-hook 'python-mode-hook ; undo this from `brm-init'
+ '(lambda () (easy-menu-add brm-menu)))
+ (easy-menu-define
+ python-brm-menu python-mode-map
+ "Bicycle Repair Man"
+ '("BicycleRepairMan"
+ :help "Interface to navigation and refactoring tool"
+ "Queries"
+ ["Find References" brm-find-references
+ :help "Find references to name at point in compilation buffer"]
+ ["Find Definition" brm-find-definition
+ :help "Find definition of name at point"]
+ "-"
+ "Refactoring"
+ ["Rename" brm-rename
+ :help "Replace name at point with a new name everywhere"]
+ ["Extract Method" brm-extract-method
+ :active (and mark-active (not buffer-read-only))
+ :help "Replace statements in region with a method"]
+ ["Extract Local Variable" brm-extract-local-variable
+ :active (and mark-active (not buffer-read-only))
+ :help "Replace expression in region with an assignment"]
+ ["Inline Local Variable" brm-inline-local-variable
+ :help
+ "Substitute uses of variable at point with its definition"]
+ ;; Fixme: Should check for anything to revert.
+ ["Undo Last Refactoring" brm-undo :help ""])))
+ (error (error "Bicyclerepairman setup failed: %s" data))))
+\f
+;;;; Modes.
+
+(defvar outline-heading-end-regexp)
+(defvar eldoc-documentation-function)
+
+;; Stuff to allow expanding abbrevs with non-word constituents.
+(defun python-abbrev-pc-hook ()
+ "Set the syntax table before possibly expanding abbrevs."
+ (remove-hook 'post-command-hook 'python-abbrev-pc-hook t)
+ (set-syntax-table python-mode-syntax-table))
+
+(defvar python-abbrev-syntax-table
+ (copy-syntax-table python-mode-syntax-table)
+ "Syntax table used when expanding abbrevs.")
+
+(defun python-pea-hook ()
+ "Reset the syntax table after possibly expanding abbrevs."
+ (set-syntax-table python-abbrev-syntax-table)
+ (add-hook 'post-command-hook 'python-abbrev-pc-hook nil t))
+(modify-syntax-entry ?/ "w" python-abbrev-syntax-table)
+
+(defvar python-mode-running) ;Dynamically scoped var.
+
+;;;###autoload
+(define-derived-mode python-mode fundamental-mode "Python"
+ "Major mode for editing Python files.
+Font Lock mode is currently required for correct parsing of the source.
+See also `jython-mode', which is actually invoked if the buffer appears to
+contain Jython code. See also `run-python' and associated Python mode
+commands for running Python under Emacs.
+
+The Emacs commands which work with `defun's, e.g. \\[beginning-of-defun], deal
+with nested `def' and `class' blocks. They take the innermost one as
+current without distinguishing method and class definitions. Used multiple
+times, they move over others at the same indentation level until they reach
+the end of definitions at that level, when they move up a level.
+\\<python-mode-map>
+Colon is electric: it outdents the line if appropriate, e.g. for
+an else statement. \\[python-backspace] at the beginning of an indented statement
+deletes a level of indentation to close the current block; otherwise it
+deletes a character backward. TAB indents the current line relative to
+the preceding code. Successive TABs, with no intervening command, cycle
+through the possibilities for indentation on the basis of enclosing blocks.
+
+\\[fill-paragraph] fills comments and multi-line strings appropriately, but has no
+effect outside them.
+
+Supports Eldoc mode (only for functions, using a Python process),
+Info-Look and Imenu. In Outline minor mode, `class' and `def'
+lines count as headers. Symbol completion is available in the
+same way as in the Python shell using the `rlcompleter' module
+and this is added to the Hippie Expand functions locally if
+Hippie Expand mode is turned on. Completion of symbols of the
+form x.y only works if the components are literal
+module/attribute names, not variables. An abbrev table is set up
+with skeleton expansions for compound statement templates.
+
+\\{python-mode-map}"
+ :group 'python
+ (set (make-local-variable 'font-lock-defaults)
+ '(python-font-lock-keywords nil nil nil nil
+ (font-lock-syntactic-keywords
+ . python-font-lock-syntactic-keywords)
+ ;; This probably isn't worth it.
+ ;; (font-lock-syntactic-face-function
+ ;; . python-font-lock-syntactic-face-function)
+ ))
+ (set (make-local-variable 'parse-sexp-lookup-properties) t)
+ (set (make-local-variable 'parse-sexp-ignore-comments) t)
+ (set (make-local-variable 'comment-start) "# ")
+ (set (make-local-variable 'indent-line-function) #'python-indent-line)
+ (set (make-local-variable 'indent-region-function) #'python-indent-region)
+ (set (make-local-variable 'paragraph-start) "\\s-*$")
+ (set (make-local-variable 'fill-paragraph-function) 'python-fill-paragraph)
+ (set (make-local-variable 'require-final-newline) mode-require-final-newline)
+ (set (make-local-variable 'add-log-current-defun-function)
+ #'python-current-defun)
+ (set (make-local-variable 'outline-regexp)
+ (rx (* space) (or "class" "def" "elif" "else" "except" "finally"
+ "for" "if" "try" "while" "with")
+ symbol-end))
+ (set (make-local-variable 'outline-heading-end-regexp) ":\\s-*\n")
+ (set (make-local-variable 'outline-level) #'python-outline-level)
+ (set (make-local-variable 'open-paren-in-column-0-is-defun-start) nil)
+ (make-local-variable 'python-saved-check-command)
+ (set (make-local-variable 'beginning-of-defun-function)
+ 'python-beginning-of-defun)
+ (set (make-local-variable 'end-of-defun-function) 'python-end-of-defun)
+ (setq imenu-create-index-function #'python-imenu-create-index)
+ (set (make-local-variable 'eldoc-documentation-function)
+ #'python-eldoc-function)
+ (add-hook 'eldoc-mode-hook
+ (lambda () (run-python nil t)) ; need it running
+ nil t)
+ ;; Fixme: should be in hideshow. This seems to be of limited use
+ ;; since it isn't (can't be) indentation-based. Also hide-level
+ ;; doesn't seem to work properly.
+ (add-to-list 'hs-special-modes-alist
+ `(python-mode "^\\s-*def\\>" nil "#"
+ ,(lambda (arg)
+ (python-end-of-defun)
+ (skip-chars-backward " \t\n"))
+ nil))
+ (set (make-local-variable 'skeleton-further-elements)
+ '((< '(backward-delete-char-untabify (min python-indent
+ (current-column))))
+ (^ '(- (1+ (current-indentation))))))
+ (add-hook 'pre-abbrev-expand-hook 'python-pea-hook nil t)
+ (if (featurep 'hippie-exp)
+ (set (make-local-variable 'hippie-expand-try-functions-list)
+ (cons 'python-try-complete hippie-expand-try-functions-list)))
+ ;; Python defines TABs as being 8-char wide.
+ (set (make-local-variable 'tab-width) 8)
+ (when python-guess-indent (python-guess-indent))
+ ;; Let's make it harder for the user to shoot himself in the foot.
+ (unless (= tab-width python-indent)
+ (setq indent-tabs-mode nil))
+ (set (make-local-variable 'python-command) python-python-command)
+ (python-find-imports)
+ (unless (boundp 'python-mode-running) ; kill the recursion from jython-mode
+ (let ((python-mode-running t))
+ (python-maybe-jython))))
+
+(custom-add-option 'python-mode-hook 'imenu-add-menubar-index)
+(custom-add-option 'python-mode-hook
+ (lambda ()
+ "Turn off Indent Tabs mode."
+ (set (make-local-variable 'indent-tabs-mode) nil)))
+(custom-add-option 'python-mode-hook 'turn-on-eldoc-mode)
+(custom-add-option 'python-mode-hook 'abbrev-mode)
+(custom-add-option 'python-mode-hook 'python-setup-brm)
+
+;;;###autoload
+(define-derived-mode jython-mode python-mode "Jython"
+ "Major mode for editing Jython files.
+Like `python-mode', but sets up parameters for Jython subprocesses.
+Runs `jython-mode-hook' after `python-mode-hook'."
+ :group 'python
+ (set (make-local-variable 'python-command) python-jython-command))
+
+(provide 'python)
+(provide 'python-21)
+;; arch-tag: 6fce1d99-a704-4de9-ba19-c6e4912b0554
+;;; python.el ends here
"ksh")
((string-match "[.]csh\\>" buffer-file-name)
"csh")
+ ((equal (file-name-nondirectory buffer-file-name) ".profile")
+ "sh")
(t
sh-shell-file))
nil nil)
;; Maintainer: Kenichi Handa <handa@m17n.org> (multi-byte characters)
;; Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Keywords: wp, print, PostScript
-;; Version: 6.7.3
+;; Version: 6.7.4
;; X-URL: http://www.emacswiki.org/cgi-bin/wiki/ViniciusJoseLatorre
-(defconst ps-print-version "6.7.3"
- "ps-print.el, v 6.7.3 <2007/02/06 vinicius>
+(defconst ps-print-version "6.7.4"
+ "ps-print.el, v 6.7.4 <2007/05/13 vinicius>
Vinicius's last change version -- this file may have been edited as part of
Emacs without changes to the version number. When reporting bugs, please also
(ps-get-size (symbol-value font-sym) "font size" font-sym))
-(defun ps-rgb-color (color default)
- (cond ((and color (listp color) (= (length color) 3)
- (let ((cl color)
- (ok t) e)
- (while (and ok cl)
- (setq e (car cl)
- cl (cdr cl)
- ok (and (floatp e) (<= 0.0 e) (<= e 1.0))))
- ok))
- color)
- ((and (floatp color) (<= 0.0 color) (<= color 1.0))
- (list color color color))
- ((stringp color) (ps-color-scale color))
- (t (list default default default))
- ))
+(defun ps-rgb-color (color unspecified default)
+ (cond
+ ;; (float float float) ==> (R G B)
+ ((and color (listp color) (= (length color) 3)
+ (let ((cl color)
+ (ok t) e)
+ (while (and ok cl)
+ (setq e (car cl)
+ cl (cdr cl)
+ ok (and (floatp e) (<= 0.0 e) (<= e 1.0))))
+ ok))
+ color)
+ ;; float ==> 0.0 = black .. 1.0 = white
+ ((and (floatp color) (<= 0.0 color) (<= color 1.0))
+ (list color color color))
+ ;; "colorName" but different from "unspecified-[bf]g"
+ ((and (stringp color) (not (string= color unspecified)))
+ (ps-color-scale color))
+ ;; ok, use the default
+ (t
+ (list default default default))))
(defun ps-begin-job (genfunc)
(ps-face-background-name 'default))
(t
ps-default-bg))
+ "unspecified-bg"
1.0)
ps-default-foreground (ps-rgb-color
(cond
(ps-face-foreground-name 'default))
(t
ps-default-fg))
+ "unspecified-fg"
0.0)
ps-default-color (and (eq ps-print-color-p t) ps-default-foreground)
ps-current-color ps-default-color
C-u \\[set-mark-command] \\[set-mark-command] \\[set-mark-command]
will pop the mark three times.
-nil means \\[set-mark-command]'s behavior does not change
+A value of nil means \\[set-mark-command]'s behavior does not change
after C-u \\[set-mark-command]."
:type 'boolean
:group 'editing-basics)
If the last global mark pushed was not in the current buffer,
also push LOCATION on the global mark ring.
Display `Mark set' unless the optional second arg NOMSG is non-nil.
-In Transient Mark mode, activate mark if optional third arg ACTIVATE non-nil.
Novice Emacs Lisp programmers often try to use the mark for the wrong
purposes. See the documentation of `set-mark' for more information.
-In Transient Mark mode, this does not activate the mark."
+In Transient Mark mode, activate mark if optional third arg ACTIVATE non-nil."
(unless (null (mark t))
(setq mark-ring (cons (copy-marker (mark-marker)) mark-ring))
(when (> (length mark-ring) mark-ring-max)
"\n")))
:face variable-pitch "\
Emacs FAQ\t\tFrequently asked questions and answers
-View Emacs Manual\tView the Emacs manual using Info
+View Emacs Manual\t\tView the Emacs manual using Info
Absence of Warranty\tGNU Emacs comes with "
:face (variable-pitch :slant oblique)
"ABSOLUTELY NO WARRANTY\n"
:face variable-pitch
"\
-Copying Conditions\tConditions for redistributing and changing Emacs
+Copying Conditions\t\tConditions for redistributing and changing Emacs
Getting New Versions\tHow to obtain the latest version of Emacs
More Manuals / Ordering Manuals Buying printed manuals from the FSF\n")
(:face variable-pitch
- "To quit a partially entered command, type "
+ "\nTo quit a partially entered command, type "
:face default
"Control-g"
:face variable-pitch
- ".\n"
+ ".
+
+Emacs Guided Tour\t\tSee http://www.gnu.org/software/emacs/tour/
+
+"
:face (variable-pitch :weight bold)
"Useful File menu items:\n"
:face variable-pitch
"Control-c"
:face variable-pitch
")
-Recover Crashed Session\tRecover files you were editing before a crash
-
-
-
-
-
-"
+Recover Crashed Session\tRecover files you were editing before a crash\n"
))
"A list of texts to show in the middle part of splash screens.
Each element in the list should be a list of strings or pairs
;;;###autoload
(define-minor-mode t-mouse-mode
- "Toggle t-mouse mode.
+ "Toggle t-mouse mode to use the mouse in Linux consoles.
With prefix arg, turn t-mouse mode on iff arg is positive.
-Turn it on to use Emacs mouse commands, and off to use t-mouse commands."
+This allows the use of the mouse when operating on a Linux console, in the
+same way as you can use the mouse under X11.
+It requires the `mev' program, part of the `gpm' utilities."
nil " Mouse" nil :global t
(if t-mouse-mode
;; Turn it on
(goto-char (posn-point (event-end event)))
(tar-extract))
+(defun tar-file-name-handler (op &rest args)
+ "Helper function for `tar-extract'."
+ (or (eq op 'file-exists-p)
+ (let ((file-name-handler-alist nil))
+ (apply op args))))
+
(defun tar-extract (&optional other-window-p)
"In Tar mode, extract this entry of the tar file into its own buffer."
(interactive)
(save-excursion
(funcall set-auto-coding-function
name (- (point-max) (point)))))
- (car (find-operation-coding-system
- 'insert-file-contents
- (cons name (current-buffer)) t))))
+ ;; The following binding causes
+ ;; find-buffer-file-type-coding-system
+ ;; (defined on dos-w32.el) to act as if
+ ;; the file being extracted existed, so
+ ;; that the file's contents' encoding and
+ ;; EOL format are auto-detected.
+ (let ((file-name-handler-alist
+ (if (featurep 'dos-w32)
+ '(("" . tar-file-name-handler))
+ file-name-handler-alist)))
+ (car (find-operation-coding-system
+ 'insert-file-contents
+ (cons name (current-buffer)) t)))))
(multibyte enable-multibyte-characters)
(detected (detect-coding-region
(point-min)
(coding-system-change-text-conversion
coding 'raw-text)))
(decode-coding-region (point-min) (point-max) coding)
- (set-buffer-file-coding-system coding))
+ ;; Force buffer-file-coding-system to what
+ ;; decode-coding-region actually used.
+ (set-buffer-file-coding-system last-coding-system-used t))
;; Set the default-directory to the dir of the
;; superior buffer.
(setq default-directory
(coding (or (cdr (assq (car script-language)
mac-script-code-coding-systems))
'mac-roman)))
- (mac-unread-string (mac-utxt-to-string text coding))))
+ (if text
+ (mac-unread-string (mac-utxt-to-string text coding)))))
;; kEventClassTextInput/kEventTextInputUpdateActiveInputArea
(define-key mac-apple-event-map [text-input update-active-input-area]
and `sentence-end-without-period').
Remove indentation from each line."
(interactive "*r")
+ ;; Ideally, we'd want to scan the text from the end, so that changes to
+ ;; text don't affect the boundary, but the regexp we match against does
+ ;; not match as eagerly when matching backward, so we instead use
+ ;; a marker.
+ (unless (markerp end) (setq end (copy-marker end t)))
(let ((end-spc-re (concat "\\(" (sentence-end) "\\) *\\| +")))
(save-excursion
(goto-char beg)
(fill-paragraph arg)))
(defun fill-paragraph (arg)
- "Fill paragraph at or after point. Prefix ARG means justify as well.
+ "Fill paragraph at or after point.
+
+If ARG is non-nil (interactively, with prefix argument), justify as well.
If `sentence-end-double-space' is non-nil, then period followed by one
space does not end a sentence, so don't break a line there.
the variable `fill-column' controls the width for filling.
But don't look beyond what's visible on the screen."
(interactive "d")
- (let (top bot)
- (save-excursion
- (move-to-window-line 0)
- (setq top (point))
- (move-to-window-line -1)
- (setq bot (point)))
+ (let ((top (window-start))
+ (bot (window-end)))
(save-excursion
(save-restriction
(narrow-to-region top bot)
(error "Pop-up menus do not work on this terminal"))
;; use the correct dictionary
(flyspell-accept-buffer-local-defs)
+ (or opoint (setq opoint (point-marker)))
(let ((cursor-location (point))
(word (flyspell-get-word nil)))
(if (consp word)
;;*---------------------------------------------------------------------*/
(defun flyspell-emacs-popup (event poss word)
"The Emacs popup menu."
+ (unless window-system
+ (error "This command requires pop-up dialogs"))
(if (not event)
(let* ((mouse-pos (mouse-position))
(mouse-pos (if (nth 1 mouse-pos)
;; to avoid collapsing markers before and after
;; into a single place.
(ispell-insert-word new-word)
- (delete-region (point) (+ (point) (- end start)))
+ (delete-region (point) end)
;; It is meaningless to preserve the cursor position
;; inside a word that has changed.
(setq cursor-location (point))
;; return dummy word when just flagging misspellings
(list "" (point) (point))
(error "No word found to check!"))
- (setq start (match-beginning 0)
- end (point)
+ (setq start (copy-marker (match-beginning 0))
+ end (point-marker)
word (buffer-substring-no-properties start end))
(list word start end))))
(defun ispell-start-process ()
"Start the ispell process, with support for no asynchronous processes.
Keeps argument list for future ispell invocations for no async support."
- (let (args)
+ (let ((default-directory default-directory)
+ args)
+ (unless (and (file-directory-p default-directory)
+ (file-readable-p default-directory))
+ ;; Defend against bad `default-directory'.
+ (setq default-directory (expand-file-name "~/")))
;; Local dictionary becomes the global dictionary in use.
(setq ispell-current-dictionary
(or ispell-local-dictionary ispell-dictionary))
;; Show preceding or following hidden tag, depending of cursor direction.
(let ((inhibit-point-motion-hooks t))
(save-excursion
- (message "Invisible tag: %s"
- ;; Strip properties, otherwise, the text is invisible.
- (buffer-substring-no-properties
- (point)
- (if (or (and (> x y)
- (not (eq (following-char) ?<)))
- (and (< x y)
- (eq (preceding-char) ?>)))
- (backward-list)
- (forward-list)))))))
+ (condition-case nil
+ (message "Invisible tag: %s"
+ ;; Strip properties, otherwise, the text is invisible.
+ (buffer-substring-no-properties
+ (point)
+ (if (or (and (> x y)
+ (not (eq (following-char) ?<)))
+ (and (< x y)
+ (eq (preceding-char) ?>)))
+ (backward-list)
+ (forward-list))))
+ (error nil)))))
+
\f
(defun sgml-validate (command)
(defun table--point-entered-cell-function (&optional old-point new-point)
"Point has entered a cell.
Refresh the menu bar."
- (unless table-cell-entered-state
- (setq table-cell-entered-state t)
- (setq table-mode-indicator t)
- (force-mode-line-update)
- (table--warn-incompatibility)
- (run-hooks 'table-point-entered-cell-hook)))
+ ;; Avoid calling point-motion-hooks recursively.
+ (let ((inhibit-point-motion-hooks t))
+ (unless table-cell-entered-state
+ (setq table-cell-entered-state t)
+ (setq table-mode-indicator t)
+ (force-mode-line-update)
+ (table--warn-incompatibility)
+ (run-hooks 'table-point-entered-cell-hook))))
(defun table--point-left-cell-function (&optional old-point new-point)
"Point has left a cell.
Refresh the menu bar."
- (when table-cell-entered-state
- (setq table-cell-entered-state nil)
- (setq table-mode-indicator nil)
- (force-mode-line-update)
- (run-hooks 'table-point-left-cell-hook)))
+ ;; Avoid calling point-motion-hooks recursively.
+ (let ((inhibit-point-motion-hooks t))
+ (when table-cell-entered-state
+ (setq table-cell-entered-state nil)
+ (setq table-mode-indicator nil)
+ (force-mode-line-update)
+ (run-hooks 'table-point-left-cell-hook))))
(defun table--warn-incompatibility ()
"If called from interactive operation warn the know incompatibilities.
(defcustom display-time-mail-file nil
"*File name of mail inbox file, for indicating existence of new mail.
-Non-nil and not a string means don't check for mail. nil means use
+Non-nil and not a string means don't check for mail; nil means use
default, which is system-dependent, and is the same as used by Rmail."
:type '(choice (const :tag "None" none)
(const :tag "Default" nil)
(defcustom display-time-24hr-format nil
"*Non-nil indicates time should be displayed as hh:mm, 0 <= hh <= 23.
-nil means 1 <= hh <= 12, and an AM/PM suffix is used."
+A value of nil means 1 <= hh <= 12, and an AM/PM suffix is used."
:type 'boolean
:group 'display-time)
WHERE is a text describing the key sequences to which DEF-FUN is
bound now (or, if it is remapped, a key sequence
for the function it is remapped to)
- REMARK is a list with info about rebinding. It has either of these
- formats:
+ REMARK is a list with info about rebinding. It has either of
+ these formats:
\(TEXT cua-mode)
\(TEXT current-binding KEY-FUN DEF-FUN KEY WHERE)
(defun get-lang-string (lang stringid &optional no-eng-fallback)
"Get a language specific string for Emacs.
-In certain places Emacs can replace a string showed to the user with a language specific string.
-This function retrieves such strings.
+In certain places Emacs can replace a string shown to the user with
+a language specific string. This function retrieves such strings.
-LANG is the language specification. It should be one of those
+LANG is the language specification. It should be one of those
strings that can be returned by `read-language-name'. STRINGID
is a symbol that specifies the string to retrieve.
-If no string is found for STRINGID in the choosen language then
+If no string is found for STRINGID in the chosen language then
the English string is returned unless NO-ENG-FALLBACK is non-nil.
See `lang-strings' for more information.
+2007-05-29 Chong Yidong <cyd@stupidchicken.com>
+
+ * url-mailto.el (url-mailto): Insert body after
+ mail-header-separator if present, so that it is before signature.
+ Bug reported by Leo <sdl.web@gmail.com>.
+
2007-04-15 Chong Yidong <cyd@stupidchicken.com>
* url-parse.el (url-generic-parse-url): Revert 2006-10-09 changes.
(while args
(if (string= (caar args) "body")
(progn
- (goto-char (point-max))
+ (goto-char (point-min))
+ (or (search-forward (concat "\n" mail-header-separator "\n") nil t)
+ (goto-char (point-max)))
(insert (mapconcat
#'(lambda (string)
(replace-regexp-in-string "\r\n" "\n" string))
(defvar vc-header-alist ())
(make-obsolete-variable 'vc-header-alist 'vc-BACKEND-header)
-(defcustom vc-ignore-dir-regexp "\\`\\([\\/][\\/]\\|/net/\\|/afs/\\)\\'"
+(defcustom vc-ignore-dir-regexp
+ ;; Stop SMB, automounter, AFS, and DFS host lookups.
+ "\\`\\(?:[\\/][\\/]\\|/\\(?:net\\|afs\\|\\.\\\.\\.\\)/\\)\\'"
"Regexp matching directory names that are not under VC's control.
The default regexp prevents fruitless and time-consuming attempts
to determine the VC status in directories in which filenames are
;; Represent /home/luser/foo as ~/foo so that we don't try to look for
;; witnesses in /home or in /.
(setq file (abbreviate-file-name file))
- (let ((root nil))
+ (let ((root nil)
+ (user (nth 2 (file-attributes file))))
(while (not (or root
(equal file (setq file (file-name-directory file)))
(null file)
+ ;; As a heuristic, we stop looking up the hierarchy of
+ ;; directories as soon as we find a directory belonging
+ ;; to another user. This should save us from looking in
+ ;; things like /net and /afs. This assumes that all the
+ ;; files inside a project belong to the same user.
+ (not (equal user (nth 2 (file-attributes file))))
(string-match vc-ignore-dir-regexp file)))
(if (file-exists-p (expand-file-name witness file))
(setq root file)
;;; Code:
-(defconst emacs-version "22.0.99" "\
+(defconst emacs-version "22.1" "\
Version numbers of this version of Emacs.")
(defconst emacs-major-version
;; is now controlled by the presence of a value in `view-return-to-alist'.
(defcustom view-scroll-auto-exit nil
"*Non-nil means scrolling past the end of buffer exits View mode.
-nil means attempting to scroll past the end of the buffer,
+A value of nil means attempting to scroll past the end of the buffer,
only rings the bell and gives a message on how to leave."
:type 'boolean
:group 'view)
(defcustom view-try-extend-at-buffer-end nil
- "*Non-nil means try load more of file when reaching end of buffer.
+ "*Non-nil means try to load more of file when reaching end of buffer.
This variable is mainly intended to be temporarily set to non-nil by
the F command in view-mode, but you can set it to t if you want the action
for all scroll commands in view mode."
:group 'view)
(defcustom view-inhibit-help-message nil
- "*Non-nil inhibits the help message showed upon entering View mode."
+ "*Non-nil inhibits the help message shown upon entering View mode."
:type 'boolean
:group 'view
:version "22.1")
(+ c #x8000000 128)
c)))
+(defun xterm-mouse-truncate-wrap (f)
+ "Truncate with wrap-around."
+ (condition-case nil
+ ;; First try the built-in truncate, in case there's no overflow.
+ (truncate f)
+ ;; In case of overflow, do wraparound by hand.
+ (range-error
+ ;; In our case, we wrap around every 3 days or so, so if we assume
+ ;; a maximum of 65536 wraparounds, we're safe for a couple years.
+ ;; Using a power of 2 makes rounding errors less likely.
+ (let* ((maxwrap (* 65536 2048))
+ (dbig (truncate (/ f maxwrap)))
+ (fdiff (- f (* 1.0 maxwrap dbig))))
+ (+ (truncate fdiff) (* maxwrap dbig))))))
+
+
(defun xterm-mouse-event ()
"Convert XTerm mouse event to Emacs mouse event."
(let* ((type (- (xterm-mouse-event-read) #o40))
(y (- (xterm-mouse-event-read) #o40 1))
;; Emulate timestamp information. This is accurate enough
;; for default value of mouse-1-click-follows-link (450msec).
- (timestamp (truncate
+ (timestamp (xterm-mouse-truncate-wrap
(* 1000
(- (float-time)
(or xt-mouse-epoch
(provide 'xt-mouse)
-;;; arch-tag: 84962d4e-fae9-4c13-a9d7-ef4925a4ac03
+;; arch-tag: 84962d4e-fae9-4c13-a9d7-ef4925a4ac03
;;; xt-mouse.el ends here
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * Version 22.1 released.
+
2007-02-28 Glenn Morris <rgm@gnu.org>
* Makefile.in (distclean): Delete Makefile.
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * Version 22.1 released.
+
+2007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * INSTALL: Add note about moving self-contained application bundle
+ to non-ASCII directory.
+
+2007-04-26 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * INSTALL: Fix description about using colors in terminal.
+ Fix typos (/Application -> /Applications).
+
2007-04-09 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* make-package (compver): Don't hardcode processor type.
/* Localized versions of Info.plist keys */
CFBundleName = "Emacs";
-CFBundleShortVersionString = "22.0.99";
-CFBundleGetInfoString = "22.0.99, Copyright (C) 2007 Free Software Foundation, Inc.";
+CFBundleShortVersionString = "22.1";
+CFBundleGetInfoString = "22.1, Copyright (C) 2007 Free Software Foundation, Inc.";
recommended; see the notes section below for more details.
The --enable-carbon-app specifies that the Carbon GUI application
-should be installed into /Application. If you want it to install in a
-different location, specify --enable-carbon-app=<mydir>
+should be installed into /Applications. If you want it to install in
+a different location, specify --enable-carbon-app=<mydir>
You can type `make bootstrap' instead of `make' to rebuild everything,
including byte-compiling the Lisp files.
To start Emacs as a GUI application from the terminal, the pathname to
the executable in the bundle, i.e.,
- /Application/Emacs.app/Contents/MacOS/Emacs
+ /Applications/Emacs.app/Contents/MacOS/Emacs
must be typed to the shell to enable Emacs to locate its resources
correctly. You may want to create an alias to this path to quickly
Note that the Carbon-specific functions mentioned above are not
available on the X11-enabled build.
-To use colors in a terminal, put the following lines in the file
-~/.termcap and log in again.
+To use colors in Terminal.app on Mac OS X 10.1, put the following
+lines in the file ~/.termcap and log in again.
-----
# added ANSI color
For usage of other options, use the --help option.
+Note: due to the problem "Installing to a directory with non-ASCII
+characters in the name fails" mentioned in etc/PROBLEMS, you may not
+move a self-contained Emacs.app application bundle to a non-ASCII
+directory.
+
* BUILDING EMACS ON MAC OS Classic
You can use MPW-GM (Aug. 2001) to build Emacs. MPW-GM can be
resource 'vers' (1) {
0x22, /* Major revision in BCD */
- 0x0, /* Minor revision in BCD */
- alpha, /* development, alpha, beta, or final (release) */
- 99, /* Non-final release # */
+ 0x1, /* Minor revision in BCD */
+ final, /* development, alpha, beta, or final (release) */
+ 0, /* Non-final release # */
0, /* Region code */
- "22.0.99", /* Short version number */
- "22.0.99, Copyright \0xa9 2007 "
+ "22.1", /* Short version number */
+ "22.1, Copyright \0xa9 2007 "
"Free Software Foundation, Inc." /* Long version number */
};
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * Version 22.1 released.
+
+2007-05-26 Michael Olson <mwolson@gnu.org>
+
+ * erc.texi (Modules): Fix references to completion modules.
+
+2007-05-10 Reiner Steib <Reiner.Steib@gmx.de>
+
+ * gnus.texi (Running NNDiary): Use ~/.gnus.el instead of gnusrc.
+
+2007-05-10 Didier Verna <didier@xemacs.org>
+
+ * gnus.texi (Email Based Diary): New. Proper documentation for the
+ nndiary back end and the gnus-diary library.
+
+2007-05-05 Francesco Potort\e,Al\e(B <pot@gnu.org>
+
+ * maintaining.texi (Create Tags Table): Add text about the dangers of
+ making symbolic links to tags files. (Clarified by RMS.)
+
+2007-05-04 Karl Berry <karl@tug.org>
+
+ * emacs.texi (EMACSVER) [smallbook]: 22.1 for printed version, not 22.
+
+2007-05-03 Karl Berry <karl@tug.org>
+
+ * emacs.texi (EMACSVER) [smallbook]: 22 for printed version.
+
+ * .cvsignore (*.pdf): new entry.
+
+ * texinfo.tex: update from current version for better pdf generation.
+
+ * emacs.texi (\urlcolor, \linkcolor) [smallbook]: \let to \Black
+ for printing.
+
+2007-05-01 Richard Stallman <rms@gnu.org>
+
+ * cmdargs.texi (Initial Options): Under --batch, mention --eval.
+
+2007-04-28 Glenn Morris <rgm@gnu.org>
+
+ * ack.texi (Acknowledgments):
+ * anti.texi (Antinews):
+ * faq.texi (New in Emacs 22):
+ * programs.texi (Program Modes): Restore mention of python.el pending
+ consideration of legal status.
+
+2007-04-28 Richard Stallman <rms@gnu.org>
+
+ * files.texi (File Names): Fixes to ~ description on MS systems.
+
+2007-04-28 Karl Berry <karl@gnu.org>
+
+ * emacs.texi: Improve line breaks on copyright page,
+ similar layout to lispref, 8.5x11 by default.
+
+ * dired.texi (Image-Dired): Improve line break, fix typo.
+
+2007-04-27 J.D. Smith <jdsmith@as.arizona.edu>
+
+ * idlwave.texi: Minor updates for IDLWAVE 6.1.
+
2007-04-24 Chong Yidong <cyd@stupidchicken.com>
* programs.texi (Program Modes):
Many new modes and packages have been included in Emacs, such as Calc,
TRAMP, URL, IDO, CUA, ERC, rcirc, Table, Image-Dired, SES, Ruler, Org,
PGG, Flymake, Password, Printing, Reveal, wdired, t-mouse, longlines,
-savehist, Conf mode, DNS mode, etc.
+savehist, Conf mode, Python mode, DNS mode, etc.
@cindex Multilingual Environment
@item
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * Version 22.1 released.
+
2007-02-10 Glenn Morris <rgm@gnu.org>
* COPYING.DJ: Remove file since it is no longer needed (see README
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * Version 22.1 released.
+
+2007-05-22 Eli Zaretskii <eliz@gnu.org>
+
+ * INSTALL: Add information about where to find GDB, and warn
+ against --no-debug option to configure.bat.
+
+2007-05-19 Eli Zaretskii <eliz@gnu.org>
+
+ * INSTALL: Fix URL of EmacsW32 site where building with image
+ support is described.
+
2007-03-31 Eli Zaretskii <eliz@gnu.org>
* INSTALL: Mention the VCVARS32.BAT batch file for VS.NET users.
cygwin compiled gmake 3.77: fails[1, 5] fails[2, 5]
cygwin compiled make 3.78.1: fails[5] fails[2, 5]
cygwin compiled make 3.79.1: fails[3, 5] fails[2?, 5]
- cygwin compiled make 3.80: fails?[6] fails?[6]
- cygwin compiled make 3.81: fails fails?[6]
+ cygwin compiled make 3.80: okay[6] fails?[7]
+ cygwin compiled make 3.81: fails fails?[7]
mingw32 compiled make 3.79.1: okay okay
- mingw32 compiled make 3.80: okay okay[6]
- mingw32 compiled make 3.81: okay okay[7]
+ mingw32 compiled make 3.80: okay okay[7]
+ mingw32 compiled make 3.81: okay okay[8]
Notes:
[4] may fail on Windows 9X and Windows ME; if so, install Bash.
[5] fails when building leim due to the use of cygwin style paths.
May work if building emacs without leim.
- [6] not recommended; please report if you try this combination.
- [7] tested only on Windows XP.
+ [6] need to uncomment 3 lines in nt/gmake.defs that invoke `cygpath'
+ (look for "cygpath" near line 85 of gmake.defs).
+ [7] not recommended; please report if you try this combination.
+ [8] tested only on Windows XP.
Other compilers may work, but specific reports from people that have
tried suggest that the Intel C compiler (for example) may produce an
To configure Emacs to build with GCC or MSVC, whichever is available,
simply change to the `nt' subdirectory and run `configure.bat' with no
options. To see what options are available, run `configure --help'.
+ Do NOT use the --no-debug option to configure.bat unless you are
+ absolutely sure the produced binaries will never need to be run under
+ a debugger.
N.B. It is normal to see a few error messages output while configure
is running, when gcc support is being tested. These cannot be
Binaries for the image libraries (among many others) can be found at
the GnuWin32 project. These are built with MinGW, but they can be
used with both GCC/MinGW and MSVC builds of Emacs. See the info on
- http://ourcomments.org/Emacs/EmacsW32.html for more details about
- installing image support libraries.
+ http://ourcomments.org/Emacs/w32-build-emacs.html, under "How to Get
+ Images Support", for more details about installing image support
+ libraries. Note specifically that, due to some packaging snafus in
+ the GnuWin32-supplied image libraries, you will need to download
+ _source_ packages for some of the libraries in order to get the
+ header files necessary for building Emacs with image support.
* Building
You should be able to debug Emacs using the debugger that is
appropriate for the compiler you used, namely DevStudio or Windbg if
- compiled with MSVC, or GDB if compiled with GCC.
+ compiled with MSVC, or GDB if compiled with GCC. (GDB for Windows
+ is available from the MinGW site, http://www.mingw.org/download.shtml.)
When Emacs aborts due to a fatal internal error, Emacs on Windows
pops up an Emacs Abort Dialog asking you whether you want to debug
rem cygwin compiled gmake 3.77: fails[1,5] fails[2,5]\r
rem cygwin compiled gmake 3.78.1: fails[5] fails[2,5]\r
rem cygwin compiled gmake 3.79.1: fails[3,5] fails[2?,5]\r
-rem cygwin compiled make 3.80: fails?[6] fails?[6]\r
-rem cygwin compiled make 3.81: fails fails?[6]\r
+rem cygwin compiled make 3.80: okay[6] fails?[7]\r
+rem cygwin compiled make 3.81: fails fails?[7]\r
rem mingw32 compiled make 3.79.1: okay okay\r
-rem mingw32 compiled make 3.80: okay okay?[6]\r
-rem mingw32 compiled make 3.81: okay okay[7]\r
+rem mingw32 compiled make 3.80: okay okay?[7]\r
+rem mingw32 compiled make 3.81: okay okay[8]\r
rem\r
rem [1] doesn't cope with makefiles with DOS line endings, so must mount\r
rem emacs source with text!=binary.\r
rem [4] may fail on Windows 9X and Windows ME; if so, install Bash.\r
rem [5] fails when building leim due to the use of cygwin style paths.\r
rem May work if building emacs without leim.\r
-rem [6] not recommended; please report if you try this combination.\r
-rem [7] tested only on Windows XP.\r
+rem [6] need to uncomment 3 lines in nt/gmake.defs that invoke `cygpath';\r
+rem look for "cygpath" near line 85 of gmake.defs.\r
+rem [7] not recommended; please report if you try this combination.\r
+rem [8] tested only on Windows XP.\r
rem\r
\r
if exist config.log del config.log\r
#endif
VS_VERSION_INFO VERSIONINFO
- FILEVERSION 22,0,99,0
- PRODUCTVERSION 22,0,99,0
+ FILEVERSION 22,1,0,0
+ PRODUCTVERSION 22,1,0,0
FILEFLAGSMASK 0x3FL
#ifdef EMACSDEBUG
FILEFLAGS 0x1L
BEGIN
VALUE "CompanyName", "Free Software Foundation\0"
VALUE "FileDescription", "GNU Emacs for Windows NT/95/98/2000/ME/XP\0"
- VALUE "FileVersion", "22, 0, 99, 0\0"
+ VALUE "FileVersion", "22, 1, 0, 0\0"
VALUE "InternalName", "Emacs\0"
VALUE "LegalCopyright", "Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007\0"
VALUE "OriginalFilename", "emacs.exe"
VALUE "ProductName", "Emacs: The extensible self-documenting text editor\0"
- VALUE "ProductVersion", "22, 0, 99, 0\0"
+ VALUE "ProductVersion", "22, 1, 0, 0\0"
VALUE "OLESelfRegister", "\0"
END
END
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * Version 22.1 released.
+
+2007-05-30 Ulrich Mueller <ulm@gentoo.org> (tiny change)
+
+ * XMakeAssoc.c (XMakeAssoc): Use malloc rather than xmalloc.
+
2007-02-27 Glenn Morris <rgm@gnu.org>
* Imakefile: Remove unused file with no explicit legal info.
/* If we are here then the new entry should be inserted just */
/* before the current value of "Entry". */
/* Create a new XAssoc and load it with new provided data. */
- new_entry = (XAssoc *) xmalloc(sizeof(XAssoc));
+ new_entry = (XAssoc *) malloc(sizeof(XAssoc));
new_entry->display = dpy;
new_entry->x_id = x_id;
new_entry->data = data;
+2007-06-02 Chong Yidong <cyd@stupidchicken.com>
+
+ * Version 22.1 released.
+
+ * xfns.c (x_set_name_internal): Undo last change.
+
+2007-06-01 Richard Stallman <rms@gnu.org>
+
+ * xfns.c (x_encode_text): Add GCPRO.
+ (x_set_name_internal): Separate USE_GTK and non-USE_GTK cases.
+
+2007-06-01 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * xfns.c (x_set_name_internal): Save encoded name before
+ x_encode_text in case string data is relocated.
+
+2007-05-31 Richard Stallman <rms@gnu.org>
+
+ * buffer.c (syms_of_buffer): Doc fix.
+
+2007-05-28 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * xdisp.c (redisplay_internal): Bind inhibit-point-motion-hooks to t
+ around current_column call.
+
+2007-05-24 Chong Yidong <cyd@stupidchicken.com>
+
+ * xdisp.c (redisplay_window): If first window line is a
+ continuation line, recompute the new window start instead of
+ recentering.
+
+2007-05-24 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * macterm.c [USE_CARBON_EVENTS] (mac_handle_window_event):
+ Call mac_wakeup_from_rne on window size change.
+
+2007-05-22 Richard Stallman <rms@gnu.org>
+
+ * xterm.c (x_connection_closed): Remove NO_RETURN.
+
+2007-05-19 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * syntax.c (skip_chars): Update syntax-table only after we checked that
+ the new location is valid.
+
+2007-05-19 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * macterm.c (x_calc_absolute_position): Add BLOCK_INPUT around
+ mac_get_window_bounds.
+
+2007-05-17 Glenn Morris <rgm@gnu.org>
+
+ * m/macppc.h (ORDINARY_LINK): No longer define on OpenBSD.
+
+2007-05-16 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Also convert
+ dead key repeat and up events.
+
+2007-05-13 Chong Yidong <cyd@stupidchicken.com>
+
+ * xterm.c (XTread_socket): Revert last change.
+
+2007-05-12 Chong Yidong <cyd@stupidchicken.com>
+
+ * image.c (pbm_load): Correctly check image size for greyscale pbm.
+
+ * xterm.c (XTread_socket): Yet Another Uncaught X Error Crash (YAUXEC).
+
+2007-05-07 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * editfns.c (Ftranspose_regions): Yet another int/Lisp_Object mixup (YAILOM)
+
+2007-05-06 Richard Stallman <rms@gnu.org>
+
+ * process.c: Undo May 3 change.
+
+2007-05-03 Per Cederqvist <ceder@lysator.liu.se> (tiny change)
+
+ * process.c (Faccept_process_output): Revert 2006-03-22 change so
+ that the third argument once again is in microseconds (not
+ milliseconds). This makes it compatible with Emacs 21 and
+ earlier. Problem found by Henrik Rindl\e,Av\e(Bw.
+
+2007-05-01 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * macmenu.c (mac_dialog_show): Apply 2007-04-27 change for xmenu.c.
+ (Fx_popup_dialog) [MAC_OSX]: Likewise.
+
+2007-04-29 Richard Stallman <rms@gnu.org>
+
+ * insdel.c (replace_range): For undo, record insertion first.
+
+2007-04-29 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * xdisp.c (try_window_reusing_current_matrix): Fix number of
+ disabled lines.
+
+2007-04-27 Jan Dj\e,Ad\e(Brv <jan.h.d@swipnet.se>
+
+ * xmenu.c (xdialog_show): Call Fredisplay before showing the dialog.
+
+ * gtkutil.c (xg_update_menubar, create_menus): Create empty
+ submenu for menu bar items.
+
2007-04-24 Chong Yidong <cyd@stupidchicken.com>
* xdisp.c (redisplay_window): Use BEG_UNCHANGED and END_UNCHANGED
2007-04-16 Chong Yidong <cyd@stupidchicken.com>
- * dispnew.c (adjust_frame_glyphs_for_frame_redisplay): Set
- garbaged flag in presence of window margins.
+ * dispnew.c (adjust_frame_glyphs_for_frame_redisplay):
+ Set garbaged flag in presence of window margins.
(showing_window_margins_p): New function.
* xdisp.c (cursor_row_p): Only end row on newline if it's a
The default is t, which means that text is invisible
if it has a non-nil `invisible' property.
If the value is a list, a text character is invisible if its `invisible'
-property is an element in that list.
+property is an element in that list (or is a list with members in common).
If an element is a cons cell of the form (PROP . ELLIPSIS),
then characters with property value PROP are invisible,
and they have an ellipsis as well if ELLIPSIS is non-nil. */);
fix_start_end_in_overlays (start1, end2);
}
- signal_after_change (XINT (start1), XINT (end2 - start1),
- XINT (end2 - start1));
+ signal_after_change (start1, end2 - start1, end2 - start1);
return Qnil;
}
cl_data,
&group);
- if (item->contents)
+ /* Create a possibly empty submenu for menu bar items, since some
+ themes don't highlight items correctly without it. */
+ if (item->contents || menu_bar_p)
{
GtkWidget *submenu = create_menus (item->contents,
f,
cl_data,
&group);
+ /* Create a possibly empty submenu for menu bar items, since some
+ themes don't highlight items correctly without it. */
+ GtkWidget *submenu = create_menus (NULL, f,
+ select_cb, NULL, highlight_cb,
+ 0, 0, 0, 0, cl_data, 0);
gtk_widget_set_name (w, MENU_ITEM_NAME);
gtk_menu_shell_insert (GTK_MENU_SHELL (menubar), w, pos);
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (w), submenu);
g_list_free (*list);
*list = iter = gtk_container_get_children (GTK_CONTAINER (menubar));
}
else
{
- if (raw_p && (p + 3 * height * width > end))
+ if (raw_p
+ && ((type == PBM_GRAY)
+ ? (p + height * width > end)
+ : (p + 3 * height * width > end)))
{
x_destroy_x_image (ximg);
+ x_clear_image (f, img);
image_error ("Invalid image size in image `%s'",
img->spec, Qnil);
goto error;
if (! EQ (current_buffer->undo_list, Qt))
{
+ /* Record the insertion first, so that when we undo,
+ the deletion will be undone first. Thus, undo
+ will insert before deleting, and thus will keep
+ the markers before and after this text separate. */
+ record_insert (from + SCHARS (deletion), inschars);
record_delete (from, deletion);
- record_insert (from, inschars);
}
GAP_SIZE -= outgoing_insbytes;
/* #define NO_SOCK_SIGIO */
-#if defined(__OpenBSD__)
-#define ORDINARY_LINK
-#endif
-
#define UNEXEC unexelf.o
#define NO_TERMIO
DialogItemIndex item_hit;
Lisp_Object tem;
+ /* Force a redisplay before showing the dialog. If a frame is
+ created just before showing the dialog, its contents may not
+ have been fully drawn. */
+ Fredisplay (Qt);
+
tem = Fstring_match (concat3 (build_string ("\\("),
call0 (intern ("sentence-end")),
build_string ("\\)\n")),
first_wv = wv;
}
+ /* Force a redisplay before showing the dialog. If a frame is created
+ just before showing the dialog, its contents may not have been fully
+ drawn. */
+ Fredisplay (Qt);
+
/* Actually create the dialog. */
#if TARGET_API_MAC_CARBON
menu_item_selection = create_and_show_dialog (f, first_wv);
/* Find the offsets of the outside upper-left corner of
the inner window, with respect to the outer window. */
+ BLOCK_INPUT;
mac_get_window_bounds (f, &inner, &outer);
+ UNBLOCK_INPUT;
width_diff = (outer.right - outer.left) - (inner.right - inner.left);
height_diff = (outer.bottom - outer.top) - (inner.bottom - inner.top);
/* Normally, ConvertEventRefToEventRecord will correctly handle all
events. However the click of the mouse wheel is not converted to a
- mouseDown or mouseUp event. Likewise for dead key down events.
- This calls ConvertEventRef, but then checks to see if it is a mouse
- up/down, or a dead key down carbon event that has not been
+ mouseDown or mouseUp event. Likewise for dead key events. This
+ calls ConvertEventRefToEventRecord, but then checks to see if it is
+ a mouse up/down, or a dead key Carbon event that has not been
converted, and if so, converts it by hand (to be picked up in the
XTread_socket loop). */
static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec)
{
OSStatus err;
Boolean result = ConvertEventRefToEventRecord (eventRef, eventRec);
+ EventKind action;
if (result)
return result;
switch (GetEventKind (eventRef))
{
case kEventRawKeyDown:
+ action = keyDown;
+ goto keystroke_common;
+ case kEventRawKeyRepeat:
+ action = autoKey;
+ goto keystroke_common;
+ case kEventRawKeyUp:
+ action = keyUp;
+ keystroke_common:
{
unsigned char char_codes;
UInt32 key_code;
NULL, &key_code);
if (err == noErr)
{
- eventRec->what = keyDown;
+ eventRec->what = action;
eventRec->message = char_codes | ((key_code & 0xff) << 8);
result = 1;
}
width = bounds.right - bounds.left;
height = bounds.bottom - bounds.top;
mac_handle_size_change (f, width, height);
+ mac_wakeup_from_rne ();
}
}
p = GPT_ADDR;
stop = endp;
}
+ UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
if (! fastmap[(int) SYNTAX (p[-1])])
break;
p--, pos--;
- UPDATE_SYNTAX_TABLE_BACKWARD (pos - 1);
}
}
}
int must_finish = 0;
struct text_pos tlbufpos, tlendpos;
int number_of_visible_frames;
- int count;
+ int count, count1;
struct frame *sf;
int polling_stopped_here = 0;
update_mode_lines++;
}
+ /* Avoid invocation of point motion hooks by `current_column' below. */
+ count1 = SPECPDL_INDEX ();
+ specbind (Qinhibit_point_motion_hooks, Qt);
+
/* If %c is in the mode line, update it if needed. */
if (!NILP (w->column_number_displayed)
/* This alternative quickly identifies a common case
!= (int) current_column ())) /* iftc */
w->update_mode_line = Qt;
+ unbind_to (count1, Qnil);
+
FRAME_SCROLL_BOTTOM_VPOS (XFRAME (w->frame)) = -1;
/* The variable buffer_shared is set in redisplay_window and
w->force_start = Qt;
}
+ force_start:
+
/* Handle case where place to start displaying has been specified,
unless the specified location is outside the accessible range. */
if (!NILP (w->force_start)
than a simple mouse-click. */
if (NILP (w->start_at_line_beg)
&& NILP (do_mouse_tracking)
- && CHARPOS (startp) > BEGV)
+ && CHARPOS (startp) > BEGV
+ && CHARPOS (startp) > BEG + save_beg_unchanged
+ && CHARPOS (startp) <= Z - save_end_unchanged)
{
-#if 0
- /* The following code tried to make BEG_UNCHANGED and
- END_UNCHANGED up to date (similar to try_window_id).
- Is it important to do so?
-
- The trouble is that it's a little too strict when it
- comes to overlays: modify_overlay can call
- BUF_COMPUTE_UNCHANGED, which alters BUF_BEG_UNCHANGED and
- BUF_END_UNCHANGED directly without moving the gap.
-
- This can result in spurious recentering when overlays are
- altered in the buffer. So unless it's proven necessary,
- let's leave this commented out for now. -- cyd. */
- if (MODIFF > SAVE_MODIFF
- || BEG_UNCHANGED + END_UNCHANGED > Z_BYTE)
- {
- if (GPT - BEG < BEG_UNCHANGED)
- BEG_UNCHANGED = GPT - BEG;
- if (Z - GPT < END_UNCHANGED)
- END_UNCHANGED = Z - GPT;
- }
-#endif
-
- if (CHARPOS (startp) > BEG + save_beg_unchanged
- && CHARPOS (startp) <= Z - save_end_unchanged)
- {
- /* There doesn't seems to be a simple way to find a new
- window start that is near the old window start, so
- we just recenter. */
- goto recenter;
- }
+ w->force_start = Qt;
+ if (XMARKER (w->start)->buffer == current_buffer)
+ compute_window_start_on_continuation_line (w);
+ SET_TEXT_POS_FROM_MARKER (startp, w->start);
+ goto force_start;
}
#if GLYPH_DEBUG
nrows_scrolled);
/* Disable lines that must be updated. */
- for (i = 0; i < it.vpos; ++i)
+ for (i = 0; i < nrows_scrolled; ++i)
(start_row + i)->enabled_p = 0;
/* Re-compute Y positions. */
/* Encode Lisp string STRING as a text in a format appropriate for
XICCC (X Inter Client Communication Conventions).
+ This can call Lisp code, so callers must GCPRO.
+
If STRING contains only ASCII characters, do no conversion and
return the string data of STRING. Otherwise, encode the text by
CODING_SYSTEM, and return a newly allocated memory area which
&& SYMBOLP (coding.pre_write_conversion)
&& !NILP (Ffboundp (coding.pre_write_conversion)))
{
+ struct gcpro gcpro1;
+ /* We don't need to GCPRO string. */
+ GCPRO1 (coding_system);
string = run_pre_post_conversion_on_str (string, &coding, 1);
+ UNGCPRO;
str = SDATA (string);
chars = SCHARS (string);
bytes = SBYTES (string);
int bytes, stringp;
int do_free_icon_value = 0, do_free_text_value = 0;
Lisp_Object coding_system;
+#ifdef USE_GTK
+ Lisp_Object encoded_name;
+ struct gcpro gcpro1;
+
+ /* As ENCODE_UTF_8 may cause GC and relocation of string data,
+ we use it before x_encode_text that may return string data. */
+ GCPRO1 (name);
+ encoded_name = ENCODE_UTF_8 (name);
+ UNGCPRO;
+#endif
coding_system = Qcompound_text;
/* Note: Encoding strategy
#ifdef USE_GTK
gtk_window_set_title (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)),
- (char *) SDATA (ENCODE_UTF_8 (name)));
+ (char *) SDATA (encoded_name));
#else /* not USE_GTK */
XSetWMName (FRAME_X_DISPLAY (f), FRAME_OUTER_WINDOW (f), &text);
#endif /* not USE_GTK */
/* No selection has been chosen yet. */
menu_item_selection = 0;
+ /* Force a redisplay before showing the dialog. If a frame is created
+ just before showing the dialog, its contents may not have been fully
+ drawn, as this depends on timing of events from the X server. Redisplay
+ is not done when a dialog is shown. If redisplay could be done in the
+ X event loop (i.e. the X event loop does not run in a signal handler)
+ this would not be needed. */
+ Fredisplay (Qt);
+
/* Actually create and show the dialog. */
create_and_show_dialog (f, first_wv);
static void x_sync_with_move P_ ((struct frame *, int, int, int));
static int handle_one_xevent P_ ((struct x_display_info *, XEvent *,
int *, struct input_event *));
-static SIGTYPE x_connection_closed P_ ((Display *, char *)) NO_RETURN;
+/* Don't declare this NO_RETURN because we want no
+ interference with debugging failing X calls. */
+static SIGTYPE x_connection_closed P_ ((Display *, char *));
/* Flush display of frame F, or of all frames if F is null. */